当前位置:   article > 正文

常见图表的绘制_plt.plot(x,y,color='m',linestyle='-',marker='o',mf

plt.plot(x,y,color='m',linestyle='-',marker='o',mfc='w') 中的mfc是什么意思

绘制折线图 plot()

参数说明:

mfc:标记的颜色。 

ms:标记的大小。 

mec:标记边框的颜色。 

alpha:透明度,设置该参数可以改变颜色的深浅。

举例:

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4. df=pd.read_excel('体温.xls')
  5. plt.rcParams['font.sans-serif']=['SimHei']
  6. x=df['日期']
  7. y=df['体温']
  8. plt.figure(figsize=(10,8),facecolor='c')
  9. plt.plot(x,y,color='m',linestyle='-',marker='o',mfc='w')
  10. plt.xlabel('2020年2月')
  11. plt.ylabel('基础体温')
  12. # 设置xy轴的最大限度
  13. # plt.xlim(1,14)
  14. # plt.ylim(36.0,36.5)
  15. # 网格线
  16. plt.grid(linestyle='--')
  17. for a,b in zip(x,y):
  18. plt.text(a,b+0.03,'%.1f'%b,ha='center',va='bottom',fontsize=9)
  19. # 标题
  20. plt.title('14天基础体温表',fontsize='18')
  21. # 图标图例
  22. plt.legend(('基础体温',))
  23. # 标注最高温
  24. x_max=x[y.idxmax()]
  25. y_max=y[x.idxmax()]
  26. plt.annotate('最高体温',xy=(x_max,y_max),xytext=(x_max+0.3,y_max))
  27. # 坐标轴刻度线
  28. 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;否则柱子会出现重叠现象。

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. df=pd.read_excel('books.xlsx',sheet_name='Sheet2')
  4. plt.rcParams['font.sans-serif']=['SimHei']
  5. labels=df['年份']
  6. y1=df['京东']
  7. y2=df['天猫']
  8. y3=df['自营']
  9. width=0.25
  10. x=[i for i in range(len(labels.values))]
  11. x=pd.Series(x)
  12. plt.bar(x,y1,width=width,color='b',alpha=0.7)
  13. plt.bar(x+width,y2,width=width,color='y')
  14. plt.bar(x+2*width,y3,width=width,color='g')
  15. plt.xticks(x,labels)
  16. plt.xlabel('年份')
  17. plt.ylabel('销量')
  18. plt.ylabel('线上销售额(元)')
  19. plt.title('2013-2019年线上图书销售额分析图')
  20. plt.grid(linestyle=':')

 

 

绘制直方图 hist()

参数说明: 

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,是否为堆积柱状图。

  1. import matplotlib.pyplot as plt
  2. import pandas as pd
  3. df=pd.read_excel('grade1.xls')
  4. plt.rcParams['font.sans-serif']=['SimHei']
  5. x=df['得分']
  6. plt.xlabel('分数')
  7. plt.ylabel('学生数量')
  8. plt.title('高一数学成绩分布直方图')
  9. plt.hist(x,bins=[0,25,50,75,100,125,150],facecolor='blue',edgecolor='black',alpha=0.7,density=True)
  10. plt.show()

 

绘制饼形图 pie()

1.基础饼形图

参数说明

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,则旋转每个标签到指定的角度。

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. df1=pd.read_excel('data2.xls')
  4. plt.rcParams['font.sans-serif']=['SimHei']
  5. plt.figure(figsize=(5,3))
  6. labels=df1['地区']
  7. sizes=df1['销量']
  8. colors=['red','yellow','slateblue','green','magenta','cyan','darkorange','lawngreen','pink','gold']
  9. plt.pie(sizes,
  10. labels=labels,
  11. colors=colors,
  12. labeldistance=1.02,
  13. autopct='%.1f%%',
  14. startangle=90,
  15. radius=0.5,
  16. center=(0.2,0.2),
  17. textprops={'fontsize':9,'color':'k'},
  18. pctdistance=0.6,
  19. wedgeprops = {'width': 0.3, 'edgecolor': 'k'},
  20. shadow=True,
  21. # fontdict={"color":'red'}
  22. )
  23. plt.axis('equal')
  24. plt.title('2020年1月各地区销量占比情况分析')

 

 

2.分裂饼形图

分裂饼形图主要通过设置explode参数实现,该参数用于设置饼图距中心的距离,我们需要将哪块饼图分裂出来,就设置它与中心的距离即可

注意:有几个数据explode就需要设置几个参数,参数长度必须一致

3.立体感带阴影的饼形图

shadow=True

4.环形图

一个关键参数wedgeprops,字典类型,用于设置饼形图内、外边界的属性,如环的宽度,环边界颜色和宽度,

5.内嵌环形图

(1)连续使用两次pie()函数。

(2)通过wedgeprops参数设置环形边界。

(3)通过radius参数设置不同的半径。

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. # 内嵌环形图分析各地区销量占比情况。
  4. df = pd.read_excel("data2.xls", sheet_name=None)
  5. plt.rcParams["font.sans-serif"] = ["SimHei"]
  6. x1 = df["Sheet1"]["销量"]
  7. x2 = df["2月"]["销量"]
  8. # 画布
  9. plt.figure(figsize=(6, 6))
  10. # pctdistance:类似于labeldistance参数,指定百分比的位置刻度,默认值为0.6; autopct: 百分比
  11. # wedgeprops:字典类型,可选参数,默认值为None。字典传递给wedge对象,用来画一个饼图。例如wedgeprops={'linewidth':2}设置wedge线宽为2
  12. # edgecolor: 边缘颜色
  13. plt.pie(x1, labels=df["Sheet1"]["地区"], autopct="%.1f%%", radius=1,pctdistance=0.85, wedgeprops=dict(linewidth=2, width=0.3, edgecolor="w"))
  14. plt.pie(x2, autopct="%.1f%%", radius=0.7, pctdistance=0.85, wedgeprops=dict(linewidth=2, width=0.3, edgecolor="w"))
  15. 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:关键字参数,其他可选参数。

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. import random
  4. plt.figure(figsize=(5,3))
  5. x=[random.randrange(0,100) for i in range(50)]
  6. y=[random.randrange(10,200) for r in range(50)]
  7. color=[]
  8. for i in range(25):
  9. color.extend([i,i])
  10. plt.scatter(x,y,c=color)

 

 

绘制面积图  stackplot()

参数说明:

x:x轴数据。 

args:当传入的参数个数未知时使用args。这里指y轴数据可以传入多个y轴。 

data:data关键字参数。如果给定一个数据参数,所有位置和关键字参数将被替换。 

kwargs:关键字参数,其他可选参数,如color(颜色)、alpha(透明度)等。

绘制热力图  imshow()

热力图是通过密度函数进行可视化用于表示地图中点的密度的热图。它使人们能够独立于缩放因子感知点的密度。热力图可以显示不可点击区域发生的事情。利用热力图可以看数据表里多个特征两两的相似度

显示颜色条:plt.colorbar()

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. df=pd.read_csv('data.csv',encoding='gbk')
  4. plt.rcParams["font.sans-serif"] = ["SimHei"]
  5. da=df['中奖号码'].str.split(' ',expand=True)
  6. da_num=[]
  7. for i in range(7):
  8. idx=i+1
  9. if idx==7:
  10. idx=0
  11. tem=da.groupby(i).count()[idx]
  12. da_num.append(tem)
  13. x=pd.concat(da_num,axis=1)
  14. x.fillna(0,inplace=True)
  15. plt.imshow(x.values)

 

 

绘制箱形图  boxplot() 

箱形图又称箱线图、盒须图或盒式图,它是一种用作显示一组数据分散情况下的资料的统计图。因形状像箱子而得名。箱形图最大的优点就是不受异常值的影响(异常值也称为离群值

参数说明: 

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)极端异常值

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. df=pd.read_excel('学生成绩表.xlsx')
  4. df=df.fillna(0)
  5. plt.figure(figsize=(5,3))
  6. plt.boxplot([df['第一周'],df['第二周'],df['第三周']],boxprops={'color':'red'},showmeans=True)
  7. plt.xticks([1,2,3],['第一周','第二周','第三周'])

 

绘制3D图表 Axes3D()

from mpl_toolkits.mplot3d.exes3d import Axes3d

绘制多个子图表

1.subplot()函数

subplot()函数直接指定划分方式和位置,它可以将一个绘图区域划分为n个子图,每个subplot()函数只能绘制一个子图

参数说明: 

args:当传入的参数个数未知时使用args。 

kwargs:关键字参数,其他可选参数。 例如,绘制一个2×3的区域,subplot(2,3,3),将画布分成2行3列在第3个区域中绘制

(1)每绘制一个子图表都要调用一次subplot()函数。

(2)绘图区域位置编号

  1. import matplotlib.pyplot as plt
  2. plt.figure(figsize=(10,8),facecolor='c')
  3. plt.subplot(4,3,1)
  4. plt.subplot(4,3,2)
  5. plt.subplot(4,3,3)
  6. plt.subplot(4,2,3)
  7. plt.subplot(4,2,4)
  8. plt.subplot(4,1,3)
  9. plt.subplot(4,4,13)
  10. plt.subplot(4,4,14)
  11. plt.subplot(4,4,15)
  12. plt.subplot(4,4,16)

 

2.subplots()函数

参数说明: 

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。

  1. import matplotlib.pyplot as plt
  2. plt.figure(figsize=(10,8),facecolor='c')
  3. figure,axes=plt.subplots(1,3)
  4. axes[0].plot([1,2,3,4,5])
  5. axes[1].bar([1,2,3,4,5],[4,5,6,7,2])
  6. axes[2].pie([1,2,3,4,5])

 

 

3.add_subplot()函数

add_subplot()函数也可以实现在一张图上绘制多个子图表,用法与subplot()函数基本相同

总结:以上用3种方法实现了在一张图上绘制多个子图表,3种方法各有所长。subplot()函数和add_subplot()函数比较灵活,定制化效果比较好,可以实现子图表在图中的各种布局(如一张图上可以随意摆放3个或5个图表);而subplots()函数较为不灵活,但它可以用较少的代码实现绘制多个子图表。

图表的保存

plt.savefig('image.png')

需要注意的一个关键问题:保存代码必须在图表预览前,也就是plt.show()代码前;否则保存后的图片是白色,图表无法保存。

双y轴可视化数据分析图表

双y轴可视化数据分析图表的实现主要使用add_suplot()函数和twinx()函数。twinx()函数表示共享x轴,那么也就是一个x轴、两个y轴

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. df =pd.read_excel('mrbook.xlsx')
  4. x=[1,2,3,4,5,6]
  5. y1=df['销量']
  6. y2=df['rate']
  7. flg=plt.figure()
  8. plt.rcParams['font.sans-serif']=['SimHei']
  9. plt.rcParams['axes.unicode_minus']=False
  10. ax1=fig.add_subplot(111)
  11. plt.title('销量占比情况')
  12. plt.xticks(x,['1月','2月','3月','4月','5月','6月'])
  13. ax1.bar(x,y1,label='left')
  14. ax1.set_ylabel('销量 (册)')
  15. ax2=ax1.twinx()
  16. ax2.plot(x,y2,color='black',linestyle='--',marker='o',linewidth=2,label=u'增长率')
  17. ax2.set_ylabel(u'增长率')
  18. for a,b in zip(x,y2):
  19. plt.text(a,b+0.02,'%.2f%b',ha='center',va='bottom',fontsize=10,color='red')
  20. plt.show()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/166848?site
推荐阅读
相关标签
  

闽ICP备14008679号