matplotlib绘制箱形图之基本配置——万能模板案例(二)

简介: matplotlib绘制箱形图之基本配置——万能模板案例

使用seaborn进行绘制

plt.figure(figsize=(10,16))
tips["weekend"] = tips["day"].isin(["Sat", "Sun"])
plt.subplot(321)
sns.barplot(data=tips,x="day", y="total_bill", hue="weekend", dodge=False)
plt.subplot(322)
sns.pointplot(data=tips,x="day", y="total_bill", hue="weekend", dodge=False)
plt.subplot(323)
sns.boxplot(data=tips,x="day", y="total_bill", hue="weekend", dodge=False)
plt.subplot(324)
sns.violinplot(data=tips,x="day", y="total_bill", hue="weekend", dodge=False)
plt.subplot(325)
sns.stripplot(data=tips,x="day", y="total_bill", hue="weekend", dodge=False)
plt.subplot(326)
sns.swarmplot(data=tips,x="day", y="total_bill", hue="weekend", dodge=False)


image.png


fig = plt.figure(figsize=(10,5))
sns.violinplot(data=df,x='PROD_TYPE',y='PRICE',figure=fig)
#sns.violinplot(data=df,x='OPERATOR',y='PROFIT',figure=fig)


image.png


可能看到这里,有些小伙伴都没有理解绘制线形图的要点和精髓,那么下面我们继续在此基础上研究图形的配置和数据源的选择!


线形图的直观可视化

plt.boxplot([1,2,3,4,5,6,7,8,9,10,20])  # 箱型图
plt.scatter(np.full(11,2),[1,2,3,4,5,6,7,8,9,10,20])  # 散点图

加一组散点图和线形图进行对比,我们发现线形图反映的是数据的分布特点,也就是我们散点图的可视化,只不过,线形图有更好的指标让我们一目了然的去看出数据的特点。


image.png


加一组直方图

N = np.random.randn(1000)*0.5 # Normal 产生1000各满足正态分布的随机数数组
plt.figure(dpi=120)
plt.boxplot(N)
plt.scatter(np.full_like(N,2),N,s=0.3,alpha=0.5,)
plt.hist(N,orientation='horizontal',density=True)


image.png


剖析线形图的原理

N = [ -2,1,3,4,5,6,7,8,9,               17,        20]
Q0 = np.quantile(N,q=0/4)  # 最小值
Q1 = np.quantile(N,q=1/4)  # 箱子的下边
Q2 = np.quantile(N,q=2/4)  # 箱子的中位数线
Q3 = np.quantile(N,q=3/4)  # 箱子的上边
Q4 = np.quantile(N,q=4/4)  # 最大值
M = np.mean(N)
IQR = Q3-Q1  # 箱子的长度
Upper = Q3 + 1.5*IQR  # 箱线图的上限 (限制,如果值超过这个限度,就是异常值)
Lower = Q1 - 1.5*IQR  # 箱线图的下限 (限制,如果值不超过这个限度,就取不超限的最小值)
print(f"Q3={Q3}, Q1={Q1}, IQR={IQR}, Upper={Upper}, Lower={Lower},M={M} ")
plt.figure(dpi=120)
plt.boxplot(N,meanline=True,showmeans=True)
plt.yticks([0,Lower,Q0,Q1,M,Q2,Q3,Q4,Upper],['0','Lower','Q0','Q1','M','Q2','Q3','Q4','Upper'])
plt.grid(axis='y')


image.png



N = [0,1,3,4,5,9,10,20]
Q0 = np.quantile(N,q=0/4)  # 最小值
Q1 = np.quantile(N,q=1/4)  # 箱子的下边
Q2 = np.quantile(N,q=2/4)  # 箱子的中位数线
Q3 = np.quantile(N,q=3/4)  # 箱子的上边
Q4 = np.quantile(N,q=4/4)  # 最大值
M = np.mean(N)  # 均值
IQR = Q3-Q1  # 箱子的长度
Upper = Q3 + 1.5*IQR  # 箱线图的上限 (限制,如果值超过这个限度,就取这个限度)
Lower = Q1 - 1.5*IQR  # 箱线图的下限 (限制,如果值不超过这个限度,就取不超限的最值)
print(f"Q3={Q3}, Q1={Q1}, IQR={IQR}, Upper={Upper}, Lower={Lower},M={M} ")
plt.boxplot(N,showmeans=True)
plt.yticks([0,Lower,Q0,Q1,M,Q2,Q3,Q4,Upper])
plt.grid(axis='y')


image.png


直接使用sns和plt绘制


plt.subplot(121)
sns.boxplot(df["PROFIT"].values,showfliers=False)
plt.subplot(122)
plt.boxplot(df['PROFIT'],showfliers=False)


数据库分析实际案例

import pymysql
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'KaiTi'
plt.rcParams['axes.unicode_minus'] = False
# 连接数据库
db = pymysql.connect(host='172.19.21.249',user='root',password='root',database='testdb')
# 构造sql查询
sql = "select OPERATOR 销售人员, PRICE 销售额 FROM orders where FY='2019'"
# 执行sql查询获取结果
df = pd.read_sql_query(sql,db)
operators = df['销售人员'].unique()
boxes = []
for op in operators:
    boxes.append(df[df['销售人员']==op]['销售额'])
plt.boxplot(boxes, labels=operators, showfliers=False,showmeans=True)  
counts = df.groupby('销售人员').count()
plt.plot(np.arange(1,counts.shape[0]+1),counts)
plt.show()


image.png



总结

通过这么多的案例,我们应该明确到线形图绘制的基本语法有哪些。如何直接通过数据源就可以对其进行可视化,一般来说,线形图的用处主要是用来发掘异常值和异常点的,在科研统计中用的比较多。

相关文章
|
3天前
|
机器学习/深度学习 开发工具 git
matplotlib各种案例总结(python经典编程案例)
该文章汇总了使用matplotlib绘制不同类型图表的方法和案例,包括条形图、折线图等,并展示了如何调整颜色和线条样式等属性。
11 0
|
4月前
|
数据可视化 数据挖掘 C++
数据分析综合案例讲解,一文搞懂Numpy,pandas,matplotlib,seaborn技巧方法
数据分析综合案例讲解,一文搞懂Numpy,pandas,matplotlib,seaborn技巧方法
111 2
|
4月前
|
Python
使用Matplotlib创建不同类型图表的案例
【4月更文挑战第29天】使用Python的matplotlib库创建了四种基本图形:折线图、散点图、柱状图和饼图。代码分别展示了如何绘制这些图表,包括设置X轴和Y轴标签以及标题。这只是matplotlib的基础,更多图表和高级功能可供进一步学习和探索。
59 1
|
4月前
|
数据采集 小程序 数据挖掘
Matplotlib库模板学习,2024年最新微信小程序页面跳转方法总结
Matplotlib库模板学习,2024年最新微信小程序页面跳转方法总结
|
4月前
|
数据可视化 搜索推荐 数据处理
Matplotlib在数据科学中的应用与案例分析
【4月更文挑战第17天】本文探讨了Matplotlib在数据科学中的应用,强调其作为Python中最常用的可视化库,提供多种图表类型、高度可定制性、交互式功能及与其他库的集成。通过一个案例分析展示了如何使用Matplotlib绘制城市人口分布的条形图,并添加交互式元素以增强数据探索。掌握Matplotlib能提升数据科学家的可视化能力和效率。
|
4月前
|
Python
又再肝3天,整理了65个Matplotlib案例,这能不收藏?
又再肝3天,整理了65个Matplotlib案例,这能不收藏?
115 0
|
4天前
|
数据可视化 数据挖掘 Linux
震撼发布!Python数据分析师必学,Matplotlib与Seaborn数据可视化实战全攻略!
在数据科学领域,数据可视化是连接数据与洞察的桥梁,能让复杂的关系变得直观。本文通过实战案例,介绍Python数据分析师必备的Matplotlib与Seaborn两大可视化工具。首先,通过Matplotlib绘制基本折线图;接着,使用Seaborn绘制统计分布图;最后,结合两者在同一图表中展示数据分布与趋势,帮助你提升数据可视化技能,更好地讲述数据故事。
17 1
|
4天前
|
存储 数据可视化 数据挖掘
揭秘!Matplotlib与Seaborn联手,如何让Python数据分析结果一目了然,惊艳全场?
在数据驱动时代,高效直观地展示分析结果至关重要。Python中的Matplotlib与Seaborn是两大可视化工具,结合使用可生成美观且具洞察力的图表。本文通过分析某电商平台的商品销量数据集,展示了如何利用这两个库揭示商品类别与月份间的销售关系及价格对销量的影响。首先使用Matplotlib绘制月份销量分布直方图,再借助Seaborn的箱线图进一步探索不同类别和价格区间下的销量稳定性。
29 10
|
17天前
|
数据可视化 Python
Python中的数据可视化:使用Matplotlib绘制图表
【9月更文挑战第11天】在这篇文章中,我们将探索如何使用Python的Matplotlib库来创建各种数据可视化。我们将从基本的折线图开始,然后逐步介绍如何添加更多的功能和样式,以使您的图表更具吸引力和信息量。无论您是数据科学家、分析师还是任何需要将数据转化为视觉形式的专业人士,这篇文章都将为您提供一个坚实的起点。让我们一起潜入数据的海洋,用视觉的力量揭示其背后的故事。
40 16
|
9天前
|
数据可视化 数据挖掘 API
使用Python进行数据可视化:探索Matplotlib和Seaborn库
【9月更文挑战第19天】在数据科学领域,将复杂的数据集转换成直观、易懂的图形是一项基本而关键的技能。本文旨在通过Python编程语言介绍两个强大的数据可视化库——Matplotlib和Seaborn,以及它们如何帮助数据分析师和研究人员揭示数据背后的故事。我们将从基础概念讲起,逐步深入到高级技巧,确保无论读者的背景如何,都能获得必要的知识和启发,以在自己的项目中实现有效的数据可视化。