赞
踩
mfc:标记的颜色。
ms:标记的大小。
mec:标记边框的颜色。
alpha:透明度,设置该参数可以改变颜色的深浅。
举例:
- import pandas as pd
- import matplotlib.pyplot as plt
- import numpy as np
-
- df=pd.read_excel('体温.xls')
-
- plt.rcParams['font.sans-serif']=['SimHei']
- x=df['日期']
- y=df['体温']
- plt.figure(figsize=(10,8),facecolor='c')
- plt.plot(x,y,color='m',linestyle='-',marker='o',mfc='w')
- plt.xlabel('2020年2月')
- plt.ylabel('基础体温')
- # 设置xy轴的最大限度
- # plt.xlim(1,14)
- # plt.ylim(36.0,36.5)
- # 网格线
- plt.grid(linestyle='--')
- for a,b in zip(x,y):
- plt.text(a,b+0.03,'%.1f'%b,ha='center',va='bottom',fontsize=9)
- # 标题
- plt.title('14天基础体温表',fontsize='18')
- # 图标图例
- plt.legend(('基础体温',))
- # 标注最高温
- x_max=x[y.idxmax()]
- y_max=y[x.idxmax()]
- plt.annotate('最高体温',xy=(x_max,y_max),xytext=(x_max+0.3,y_max))
- # 坐标轴刻度线
- plt.rcParams['xtick.direction'] = 'in'
效果
参数说明:
x:x轴数据。
height:柱子的高度,也就是y轴数据。
width:浮点型,柱子的宽度,默认值为0.8,可以指定固定值。
bottom:标量或数组,可选参数,柱形图的y坐标,默认值为None。
*:星号本身不是参数。星号表示其后面的参数为命名关键字参数,命名关键字参数必须传入参数名;否则程序会出现错误。
align:对齐方式,如center(居中)和edge(边缘),默认值为center。
data:data关键字参数。如果给定一个数据参数,所有位置和关键字参数将被替换。
kwargs:关键字参数,其他可选参数,如color(颜色)、alpha(透明度)、label(每个柱子显示的标签
柱形图中若显示n个柱子,则柱子宽度值需小于1/n;否则柱子会出现重叠现象。
- import pandas as pd
- import matplotlib.pyplot as plt
- df=pd.read_excel('books.xlsx',sheet_name='Sheet2')
- plt.rcParams['font.sans-serif']=['SimHei']
- labels=df['年份']
-
-
- y1=df['京东']
- y2=df['天猫']
- y3=df['自营']
- width=0.25
- x=[i for i in range(len(labels.values))]
- x=pd.Series(x)
- plt.bar(x,y1,width=width,color='b',alpha=0.7)
- plt.bar(x+width,y2,width=width,color='y')
- plt.bar(x+2*width,y3,width=width,color='g')
- plt.xticks(x,labels)
- plt.xlabel('年份')
- plt.ylabel('销量')
- plt.ylabel('线上销售额(元)')
- plt.title('2013-2019年线上图书销售额分析图')
- plt.grid(linestyle=':')
参数说明:
x:数据集,最终的直方图将对数据集进行统计。
bins:统计数据的区间分布。
range:元组类型,显示的区间。
density:布尔型,显示频率统计结果,默认值为None。设置值为False,不显示频率统计结果;设置值为True,则显示频率统计结果。需要注意,频率统计结果=区间数目/(总数×区间宽度)。
histtype:可选参数,设置值为bar、barstacked、step或stepfilled,默认值为bar,推荐使用默认配置,其中step使用的是梯状,stepfilled则会对梯状内部进行填充,效果与bar类似。 rwidth与bar结合使用
align:可选参数,控制柱状图的水平分布,设置值为left、mid或right,默认值为mid,其中,left或者right会有部分空白区域,推荐使用默认值。
log:布尔型,默认值为False,即y坐标轴是否选择指数刻度。
stacked:布尔型,默认值为False,是否为堆积柱状图。
- import matplotlib.pyplot as plt
- import pandas as pd
- df=pd.read_excel('grade1.xls')
- plt.rcParams['font.sans-serif']=['SimHei']
- x=df['得分']
- plt.xlabel('分数')
- plt.ylabel('学生数量')
- plt.title('高一数学成绩分布直方图')
- plt.hist(x,bins=[0,25,50,75,100,125,150],facecolor='blue',edgecolor='black',alpha=0.7,density=True)
- plt.show()
x:每一块饼图的比例,如果sum(x)>1会使用sum(x)归一化。
explode:每一块饼图离中心的距离。
labels:每一块饼图外侧显示的说明文字。
autopct:设置饼图百分比,可以使用格式化字符串或format()函数。如'%.1f '保留小数点前后1位。
pctdistance:类似于labeldistance参数,指定百分比的位置刻度,默认值为0.6。
shadow:在饼图下面画一个阴影,默认值为False,即不画阴影。
labeldistance:标记的绘制位置,相对于半径的比例,默认值为1.1,如<1则绘制在饼图内侧。
startangle:起始绘制角度,默认是从x轴正方向逆时针画起,如设置值为90则从y轴正方向画起。
radius:饼图半径,默认值为1。
counterclock:指定指针方向,布尔型,可选参数。默认值为True,表示逆时针;如果值为False,则表示顺时针。
wedgeprops:字典类型,可选参数,默认值为None。字典传递给wedge对象,用来画一个饼图。例如wedgeprops={'linewidth':2}设置wedge线宽为2。
textprops:设置标签和比例文字的格式,字典类型,可选参数,默认值为None。传递给text对象的字典参数。
center:浮点类型的列表,可选参数,默认值为(0,0),表示图表中心位置。
frame:布尔型,可选参数,默认值为False,不显示轴框架(也就是网格);如果值为True,则显示轴框架,与grid()函数配合使用。实际应用中建议使用默认设置,因为显示轴框架会干扰饼形图效果。
rotatelabels:布尔型,可选参数,默认值为False;如果值为True,则旋转每个标签到指定的角度。
- import pandas as pd
- import matplotlib.pyplot as plt
- df1=pd.read_excel('data2.xls')
- plt.rcParams['font.sans-serif']=['SimHei']
- plt.figure(figsize=(5,3))
- labels=df1['地区']
- sizes=df1['销量']
- colors=['red','yellow','slateblue','green','magenta','cyan','darkorange','lawngreen','pink','gold']
- plt.pie(sizes,
- labels=labels,
- colors=colors,
- labeldistance=1.02,
- autopct='%.1f%%',
- startangle=90,
- radius=0.5,
- center=(0.2,0.2),
- textprops={'fontsize':9,'color':'k'},
- pctdistance=0.6,
- wedgeprops = {'width': 0.3, 'edgecolor': 'k'},
- shadow=True,
- # fontdict={"color":'red'}
- )
- plt.axis('equal')
- plt.title('2020年1月各地区销量占比情况分析')
分裂饼形图主要通过设置explode参数实现,该参数用于设置饼图距中心的距离,我们需要将哪块饼图分裂出来,就设置它与中心的距离即可
注意:有几个数据explode就需要设置几个参数,参数长度必须一致
shadow=True
一个关键参数wedgeprops,字典类型,用于设置饼形图内、外边界的属性,如环的宽度,环边界颜色和宽度,
(1)连续使用两次pie()函数。
(2)通过wedgeprops参数设置环形边界。
(3)通过radius参数设置不同的半径。
- import pandas as pd
- import matplotlib.pyplot as plt
- # 内嵌环形图分析各地区销量占比情况。
- df = pd.read_excel("data2.xls", sheet_name=None)
- plt.rcParams["font.sans-serif"] = ["SimHei"]
- x1 = df["Sheet1"]["销量"]
- x2 = df["2月"]["销量"]
- # 画布
- plt.figure(figsize=(6, 6))
- # pctdistance:类似于labeldistance参数,指定百分比的位置刻度,默认值为0.6; autopct: 百分比
- # wedgeprops:字典类型,可选参数,默认值为None。字典传递给wedge对象,用来画一个饼图。例如wedgeprops={'linewidth':2}设置wedge线宽为2。
- # edgecolor: 边缘颜色
- plt.pie(x1, labels=df["Sheet1"]["地区"], autopct="%.1f%%", radius=1,pctdistance=0.85, wedgeprops=dict(linewidth=2, width=0.3, edgecolor="w"))
- plt.pie(x2, autopct="%.1f%%", radius=0.7, pctdistance=0.85, wedgeprops=dict(linewidth=2, width=0.3, edgecolor="w"))
- plt.show()
x,y:数据。
s:标记大小,以平方磅为单位的标记面积,设置值如下。
数值标量:以相同的大小绘制所有标记。
行或列向量:使每个标记具有不同的大小。x、y和sz中的相应元素确定每个标记的位置和面积。sz的长度必须等于x和y的长度。
[]:使用36平方磅的默认面积。
c:标记颜色,可选参数,默认标记颜色为蓝色。
marker:标记样式,可选参数,默认值为'o'。
cmap:颜色地图,可选参数,默认值为None。
norm:可选参数,默认值为None
vmin,vmax:标量,可选,默认值为None
alpha:透明度,可选参数,0~1的数,表示透明度,默认值为None。
linewidths:线宽,标记边缘的宽度,可选参数,默认值为None。
verts:(x,y)的序列,可选参数,如果参数marker为None,这些顶点将用于构建标记。标记的中心位置为(0,0)。
edgecolors:轮廓颜色,与参数c类似,可选参数,默认值为None。
data:data关键字参数。如果给定一个数据参数,所有位置和关键字参数将被替换。
**kwargs:关键字参数,其他可选参数。
- import pandas as pd
- import matplotlib.pyplot as plt
- import random
- plt.figure(figsize=(5,3))
- x=[random.randrange(0,100) for i in range(50)]
- y=[random.randrange(10,200) for r in range(50)]
- color=[]
- for i in range(25):
- color.extend([i,i])
- plt.scatter(x,y,c=color)
x:x轴数据。
args:当传入的参数个数未知时使用args。这里指y轴数据可以传入多个y轴。
data:data关键字参数。如果给定一个数据参数,所有位置和关键字参数将被替换。
kwargs:关键字参数,其他可选参数,如color(颜色)、alpha(透明度)等。
热力图是通过密度函数进行可视化用于表示地图中点的密度的热图。它使人们能够独立于缩放因子感知点的密度。热力图可以显示不可点击区域发生的事情。利用热力图可以看数据表里多个特征两两的相似度
显示颜色条:plt.colorbar()
- import pandas as pd
- import matplotlib.pyplot as plt
- df=pd.read_csv('data.csv',encoding='gbk')
- plt.rcParams["font.sans-serif"] = ["SimHei"]
- da=df['中奖号码'].str.split(' ',expand=True)
- da_num=[]
- for i in range(7):
- idx=i+1
- if idx==7:
- idx=0
- tem=da.groupby(i).count()[idx]
- da_num.append(tem)
- x=pd.concat(da_num,axis=1)
- x.fillna(0,inplace=True)
- plt.imshow(x.values)
箱形图又称箱线图、盒须图或盒式图,它是一种用作显示一组数据分散情况下的资料的统计图。因形状像箱子而得名。箱形图最大的优点就是不受异常值的影响(异常值也称为离群值)
x:指定要绘制箱形图的数据。
notch:是否以凹口的形式展现箱形图,默认非凹口。
sym:指定异常点的形状,默认为加号(+)显示。
vert:是否需要将箱形图垂直摆放,默认垂直摆放。
whis:指定上下限与上下四分位的距离,默认为1.5倍的四分位差。
positions:指定箱形图的位置,默认为[0,1,2,…]。
widths:指定箱形图的宽度,默认为0.5。
patch_artist:是否填充箱体的颜色。
meanline:是否用线的形式表示均值,默认用点来表示。
showmeans:是否显示均值,默认不显示。
showcaps:是否显示箱形图顶端和末端的两条线,默认显示。
showbox:是否显示箱形图的箱体,默认显示。
showfliers:是否显示异常值,默认显示。
boxprops:设置箱体的属性,如边框色、填充色等。
labels:为箱形图添加标签,类似于图例的作用。
filerprops:设置异常值的属性,如异常点的形状、大小、填充色等。
medianprops:设置中位数的属性,如线的类型、粗细等。
meanprops:设置均值的属性,如点的大小、颜色等。
capprops:设置箱形图顶端和末端线条的属性,如颜色、粗细等。
whiskerprops:设置须的属性,如颜色、粗细、线的类型等。
中位数 中位数即为数据的50%分位点所对应的值(Q2)。
上四分位数 上四分位数则为数据的75%分位点所对应的值(Q3)。
上限 上限的计算公式为Q3+1.5(Q3-Q1)。
下限 下限的计算公式为Q1-1.5(Q3-Q1) Q3-Q1表示四分位差
判断标准 | 结论 |
---|---|
x>Q3+1.5(Q3-Q1)或者x<Q1-1.5(Q3-Q1) | 异常值 |
x>Q3+3(Q3-Q1)或者x<Q1-3(Q3-Q1) | 极端异常值 |
- import pandas as pd
- import matplotlib.pyplot as plt
- df=pd.read_excel('学生成绩表.xlsx')
- df=df.fillna(0)
- plt.figure(figsize=(5,3))
- plt.boxplot([df['第一周'],df['第二周'],df['第三周']],boxprops={'color':'red'},showmeans=True)
- plt.xticks([1,2,3],['第一周','第二周','第三周'])
from mpl_toolkits.mplot3d.exes3d import Axes3d
subplot()函数直接指定划分方式和位置,它可以将一个绘图区域划分为n个子图,每个subplot()函数只能绘制一个子图
参数说明:
args:当传入的参数个数未知时使用args。
kwargs:关键字参数,其他可选参数。 例如,绘制一个2×3的区域,subplot(2,3,3),将画布分成2行3列在第3个区域中绘制
(1)每绘制一个子图表都要调用一次subplot()函数。
(2)绘图区域位置编号。
- import matplotlib.pyplot as plt
- plt.figure(figsize=(10,8),facecolor='c')
- plt.subplot(4,3,1)
- plt.subplot(4,3,2)
- plt.subplot(4,3,3)
- plt.subplot(4,2,3)
- plt.subplot(4,2,4)
- plt.subplot(4,1,3)
- plt.subplot(4,4,13)
- plt.subplot(4,4,14)
- plt.subplot(4,4,15)
- plt.subplot(4,4,16)
参数说明:
nrows和ncols:表示将画布分割成几行几列,例如,nrows=2、ncols=2表示将画布分割为2行2列,起始值均为0。当调用画布中的坐标轴时,ax[0,0]表示调用左上角的坐标,ax[1,1]表示调用右下角的坐标。
sharex和sharey:布尔值或者值为“none”“all”“row”“col”,默认值为False。用于控制x或y轴之间的属性共享。具体参数值说明如下。
True或者“all”:表示x或y轴属性在所有子图中共享。
False或者“none”:表示每个子图的x或y轴都是独立的部分。
“row”:表示每个子图在一个x或y轴上共享行(row)。
“col”:表示每个子图在一个x或y轴上共享列(column)
squeeze:布尔值,默认值为True,额外的维度从返回的axes(轴)对象中挤出,对于n×1或1×n个子图,返回一个一维数组,对于n×m,n>1和m>1返回一个二维数组;如果值为False,则表示不进行挤压操作,返回一个元素为Axes实例的二维数组,即使它最终是1×1。
subplot_kw:字典类型,可选参数。把字典的关键字传递给add_subplot()函数来创建每个子图。
gridspec_kw:字典类型,可选参数。把字典的关键字传递给GridSpec()构造函数创建网格区域,然后将子图放在网格(grid)里。 **fig_kw:把所有详细的关键字参数传递给figure。
- import matplotlib.pyplot as plt
- plt.figure(figsize=(10,8),facecolor='c')
- figure,axes=plt.subplots(1,3)
- axes[0].plot([1,2,3,4,5])
- axes[1].bar([1,2,3,4,5],[4,5,6,7,2])
- axes[2].pie([1,2,3,4,5])
add_subplot()函数也可以实现在一张图上绘制多个子图表,用法与subplot()函数基本相同
总结:以上用3种方法实现了在一张图上绘制多个子图表,3种方法各有所长。subplot()函数和add_subplot()函数比较灵活,定制化效果比较好,可以实现子图表在图中的各种布局(如一张图上可以随意摆放3个或5个图表);而subplots()函数较为不灵活,但它可以用较少的代码实现绘制多个子图表。
plt.savefig('image.png')
需要注意的一个关键问题:保存代码必须在图表预览前,也就是plt.show()代码前;否则保存后的图片是白色,图表无法保存。
双y轴可视化数据分析图表的实现主要使用add_suplot()函数和twinx()函数。twinx()函数表示共享x轴,那么也就是一个x轴、两个y轴
- import pandas as pd
- import matplotlib.pyplot as plt
- df =pd.read_excel('mrbook.xlsx')
- x=[1,2,3,4,5,6]
- y1=df['销量']
- y2=df['rate']
- flg=plt.figure()
- plt.rcParams['font.sans-serif']=['SimHei']
- plt.rcParams['axes.unicode_minus']=False
- ax1=fig.add_subplot(111)
- plt.title('销量占比情况')
- plt.xticks(x,['1月','2月','3月','4月','5月','6月'])
- ax1.bar(x,y1,label='left')
- ax1.set_ylabel('销量 (册)')
- ax2=ax1.twinx()
- ax2.plot(x,y2,color='black',linestyle='--',marker='o',linewidth=2,label=u'增长率')
- ax2.set_ylabel(u'增长率')
- for a,b in zip(x,y2):
- plt.text(a,b+0.02,'%.2f%b',ha='center',va='bottom',fontsize=10,color='red')
- plt.show()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。