Python数据可视化、三

第三章;图表辅助元素的定制

一、 设置坐标轴的标签
1.设置x轴的标签
matplotlib中可以直接使用pyplot模块的xlabel()函数设置x轴的标签,xlabel()函数的语法格式如下:

xlabel(xlabel,fontdict=None,labelpad=None,**kwargs)

2.设置y轴坐标
matplotlib中可以直接使用pyplot模块的ylabel()函数设置y轴的标签,ylabel()函数的语法格式如下:

ylabel(ylabel,fontdict=None,labelpad=None,**kwargs)

有正弦曲线和余弦曲线的图表,改图表中设置x轴和y轴的标签,具体代码如下:

import numpy as np 
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(-np.pi, np.pi, 256 , endpoint= True)
y1, y2 = np.sin(x), np.cos(x)
plt.plot(x,y1,x,y2)
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.title("2020080603017")
plt.show()

运行结果:
在这里插入图片描述
二、设置刻度线和刻度标签
1.设置刻度范围
使用pyplot模块的xlim()和ylim()函数分别可以设置或获取x轴和y轴的刻度范围。xlim()函数的代码如下所示:

xlim(left+None,right=None,emit=True,auto=False,*,xmin=None,xmax=None)

2.设置刻度标签
使用pyplot模块的xticks()和yticks()函数分别可以设置或获取x轴和y轴的刻度范围。xticks()函数的代码如下所示:

xticks(ticks=None,labels=None,**kwarges)

将此代码添加进上面的案例:

import numpy as np 
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(-np.pi, np.pi, 256 , endpoint= True)
y1, y2 = np.sin(x), np.cos(x)
plt.plot(x,y1,x,y2)
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.xlim(x.min() *1.5,x.max()*1.5 )
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r'$-\pi$', r'$-\pi/2$' ,r'$0$',r'$\pi/2$',r'$\pi$'])
plt.title("2020080603017")
plt.show()

运行结果:
在这里插入图片描述
三、 添加标题与图例
标题格式代码如下:

title(label,fontdict=None,loc='center',pad=None,**kwarges)

图例格式代码如下:

legend(handles,labels,loc,bbox_to_anchor,ncol,title,shadow,fancybox,*args,**kwargs)

继上一个案例添加代码,代码如下:

import numpy as np 
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(-np.pi, np.pi, 256 , endpoint= True)
y1, y2 = np.sin(x), np.cos(x)
lines = plt.plot(x, y1, x, y2)
plt.plot(x,y1,x,y2)
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.xlim(x.min() *1.5,x.max()*1.5 )
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r'$-\pi$', r'$-\pi/2$' ,r'$0$',r'$\pi/2$',r'$\pi$'])
plt.title("正弦曲线和余弦曲线")
plt.legend(lines, ['正弦', '余弦'], shadow=True, fancybox=True)
plt.title("2020080603017")
plt.show()

运行结果:
在这里插入图片描述
用此代码举一个实例,代码如下:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
kinds = ['购物', '人情往来', '餐饮美食', '通信物流', '生活日用', '交通出行', '休闲娱乐', '其他']
money_scale = [800 / 3000, 100 / 3000, 1000 / 3000, 200 / 3000,
               300 / 3000, 200 / 3000, 200 / 3000, 200 / 3000]
dev_position = [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]
plt.pie(money_scale, autopct='%3.1f%%', shadow=True, 
        explode=dev_position, startangle=90)
plt.title('支付宝月账单报告')
plt.legend(kinds, loc='upper right', bbox_to_anchor=[1.3, 1.1]) 
plt.title("2020080603017")
plt.show()

运行结果:
在这里插入图片描述
四、显示网格
网格的格式代码如下:

grid(b=None,which='Major',axis='both',**kwargs)

继上一个案例添加代码,代码如下:

import numpy as np 
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(-np.pi, np.pi, 256 , endpoint= True)
y1, y2 = np.sin(x), np.cos(x)
lines = plt.plot(x, y1, x, y2)
plt.plot(x,y1,x,y2)
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.xlim(x.min() *1.5,x.max()*1.5 )
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r'$-\pi$', r'$-\pi/2$' ,r'$0$',r'$\pi/2$',r'$\pi$'])
plt.title("正弦曲线和余弦曲线")
plt.legend(lines, ['正弦', '余弦'], shadow=True, fancybox=True)
plt.grid(b=True, axis="y", linewidth=0.3)
plt.title("2020080603017")
plt.show()

运行结果;
在这里插入图片描述
以此举实例:

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
x_speed = np.arange(10, 210, 10)
y_distance = np.array([0.5, 2.0, 4.4, 7.9, 12.3,
                       17.7, 24.1, 31.5, 39.9, 49.2,
                       59.5, 70.8, 83.1, 96.4, 110.7,
                       126.0, 142.2, 159.4, 177.6, 196.8])
plt.scatter(x_speed, y_distance, s=50, alpha=0.9, linewidths=0.3)
plt.xlabel('速度(km/h)')
plt.ylabel('制动距离(m)')
plt.xticks(x_speed)
plt.grid(b=True, linewidth=0.3)
plt.show()

实例运行结果:
在这里插入图片描述
五、添加参考线和参考区域
1.使用axline()绘制水平参考线
axline()函数的格式代码如下:

axline(y=0,xmin=0,xmax=1,linestyle='_',**kwargs)

2.使用axvline()绘制垂直参考线

axline(x=0,ymin=0,ymax=1,linestyle='_',**kwargs)

继上一个案例添加代码,代码如下:

import numpy as np 
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(-np.pi, np.pi, 256 , endpoint= True)
y1, y2 = np.sin(x), np.cos(x)
lines = plt.plot(x, y1, x, y2)
plt.plot(x,y1,x,y2)
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.xlim(x.min() *1.5,x.max()*1.5 )
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r'$-\pi$', r'$-\pi/2$' ,r'$0$',r'$\pi/2$',r'$\pi$'])
plt.title("正弦曲线和余弦曲线")
plt.legend(lines, ['正弦', '余弦'], shadow=True, fancybox=True)
plt.grid(b=True, axis="y", linewidth=0.3)
plt.title("2020080603017")
plt.axvline(x=0, linestyle='--')
plt.axhline(y=0, linestyle='--')
plt.show()

运行结果如下:
在这里插入图片描述
六、添加参考区域:
1.使用axhspan()绘制水平参考区域
格式代码如下:

axhspan(ymin,ymax,xmin=0,xmax,**kwarges)

2.使用axvspan()绘制参考区域:
格式代码如下:

axvspan(xmin,xmax,ymin=0,ymax=1,**kwargs)

继上一个案例添加代码,代码如下:

import numpy as np 
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(-np.pi, np.pi, 256 , endpoint= True)
y1, y2 = np.sin(x), np.cos(x)
lines = plt.plot(x, y1, x, y2)
plt.plot(x,y1,x,y2)
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.xlim(x.min() *1.5,x.max()*1.5 )
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r'$-\pi$', r'$-\pi/2$' ,r'$0$',r'$\pi/2$',r'$\pi$'])
plt.title("正弦曲线和余弦曲线")
plt.legend(lines, ['正弦', '余弦'], shadow=True, fancybox=True)
plt.grid(b=True, axis="y", linewidth=0.3)
plt.title("2020080603017")
plt.axvline(x=0, linestyle='--')
plt.axhline(y=0, linestyle='--')
plt.axvspan(xmin=0.5, xmax=2.0, alpha=0.3)
plt.axhspan(ymin=0.5, ymax=1.0, alpha=0.3)
plt.show()

运行结果:
在这里插入图片描述
举实例:

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
men_means = (90.5, 89.5, 88.7, 88.5, 85.2, 86.6)
women_means = (92.7, 87.0, 90.5, 85.0, 89.5, 89.8)
ind = np.arange(len(men_means))
width = 0.2             
fig = plt.figure()
ax = fig.add_subplot(111)
ax.bar(ind - width / 2, men_means, width, label='男生平均成绩')
ax.bar(ind + 0.2, women_means, width, label='女生平均成绩')
ax.set_title(' 高二各班男生、女生英语平均成绩')
ax.set_ylabel('分数')
ax.set_xticks(ind)
ax.set_xticklabels(['高二1班', '高二2班', '高二3班', '高二4班', '高二5班', '高二6班'])
ax.axhline(88.5, ls='--', linewidth=1.0, label='全体平均成绩')
ax.legend(loc="lower right")
plt.show()

运行结果:
在这里插入图片描述
七、添加注释文本
1 添加指向型注释文本格式代码如下:

annotate(s,xy,*arges,**kwarges)

2 添加五指向型注释文本格式代码如下:

text(x,y,s,fontdict=None,withdash<deprecated parameter>,**kwargs)

继上一个案例添加代码,代码如下:

import numpy as np 
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(-np.pi, np.pi, 256 , endpoint= True)
y1, y2 = np.sin(x), np.cos(x)
lines = plt.plot(x, y1, x, y2)
plt.plot(x,y1,x,y2)
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.xlim(x.min() *1.5,x.max()*1.5 )
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r'$-\pi$', r'$-\pi/2$' ,r'$0$',r'$\pi/2$',r'$\pi$'])
plt.title("正弦曲线和余弦曲线")
plt.legend(lines, ['正弦', '余弦'], shadow=True, fancybox=True)
plt.grid(b=True, axis="y", linewidth=0.3)
plt.title("2020080603017")
plt.axvline(x=0, linestyle='--')
plt.axhline(y=0, linestyle='--')
plt.axvspan(xmin=0.5, xmax=2.0, alpha=0.3)
plt.axhspan(ymin=0.5, ymax=1.0, alpha=0.3)
plt.text(3.10, 0.10, "y=sin(x)", bbox=dict(alpha=0.2))
plt.show()

运行结果:
在这里插入图片描述
举实例:

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = np.arange(1, 8)
y = np.array([10770, 16780, 24440, 30920, 37670, 48200, 57270])
bar_rects = plt.bar(x, y, tick_label=["FY2013", "FY2014", "FY2015",
                                      "FY2016", "FY2017", "FY2018", "FY2019"], width=0.5)
def autolabel(rects):
    for rect in rects:
        height = rect.get_height()
        plt.text(rect.get_x() + rect.get_width() / 2, height + 300, s='{}'.format(height),
                 ha='center', va='bottom')
autolabel(bar_rects)
plt.ylabel('GMV(亿元)')
plt.show()

运行结果:
在这里插入图片描述

八、 添加表格

1 添加自定义样式的表格格式代码如下:

table(cellText=None,cellColours=None,cellLoc='right',colWidth=None,rowLabels=None,rowColours=None,rowLoc='left',colLabels=None,colColours=None,colLoc='center',loc='bottom',bbox=None,edges='closed',**kwargs)

继上一案例添加代码,代码如下:

import numpy as np 
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = np.linspace(-np.pi, np.pi, 256 , endpoint= True)
y1, y2 = np.sin(x), np.cos(x)
lines = plt.plot(x, y1, x, y2)
plt.plot(x,y1,x,y2)
plt.xlabel("x轴")
plt.ylabel("y轴")
plt.xlim(x.min() *1.5,x.max()*1.5 )
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r'$-\pi$', r'$-\pi/2$' ,r'$0$',r'$\pi/2$',r'$\pi$'])
plt.title("正弦曲线和余弦曲线")
plt.legend(lines, ['正弦', '余弦'], shadow=True, fancybox=True)
plt.grid(b=True, axis="y", linewidth=0.3)
plt.title("2020080603017")
plt.axvline(x=0, linestyle='--')
plt.axhline(y=0, linestyle='--')
plt.axvspan(xmin=0.5, xmax=2.0, alpha=0.3)
plt.axhspan(ymin=0.5, ymax=1.0, alpha=0.3)
plt.text(3.10, 0.10, "y=sin(x)", bbox=dict(alpha=0.2))
plt.table(cellText=[[6, 6, 6], [8, 8, 8]],
          colWidths=[0.1] * 3, 
          rowLabels=['第1行', '第2行'],
          colLabels=['第1列', '第2列', '第3列'], loc='lower right')
plt.show()

运行结果:
在这里插入图片描述


版权声明:本文为qq_55680206原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。