Python辅助元素定制
设置坐标轴标签、刻度范围and刻度标签
设置标签
设置x轴标签
xlabel(xlabel,fontdict = None, labelpad = None, **kwargs)
xlabel:标签文本
fondict:控制文本样式的字典
labelpad:标签与坐标轴边框的距离
设置y轴标签
ylabel(ylabel,fontdict = None,labelpad = None,**kwargs)
此外,这里Axes对象可以用set_ylabel()方法改标签
实例
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.show()
设置刻度范围
xlim(left = None, right = None, emit = True, auto = False , *, xmin = None
,xmin = None)
left: 刻度取值左位数
right :右边
emit: 是否通知限制变化的观察者 默认True
auto: 是否允许自动缩放x轴默认为True
xmin:x轴刻度最小值
xmax: 最大值
设置刻度标签
xticks(ticks = None, labels = None, **kwargs
ticks:刻度的位置列表
labels:标签
此外,Axes对象可以用set_xticks() or set_yticks()方法设置
实例
#p51编程题第一题
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = np.arange(6)
x_labels = ['语文','数学','英语','物理','化学','生物']
x_width = 0.4
#设置y轴标签
plt.ylabel('平均成绩(分)')
male_marks = np.array([85.5,91,72,59,66,55])
female_marks = np.array([94,82,89.5,62,49,53])
lines1 = plt.bar(x,male_marks,tick_label=x_labels,width=x_width,align="center")
lines2 = plt.bar(x + x_width,female_marks,width=x_width,align="center")
plt.xticks(x+ x_width / 2, x_labels)
plt.show()
使用这个属性,就可以重新定位标签的位置,使得标签的位置更加好看,这里的作用就是把标签放在两个柱形图的中间
添加标题和图例
添加标题
title(label, fontdict = None, loc = 'center' , pad = None, **kwargs)
label:标题文本
fontdict: 文本样式字典
loc: 标题对齐样式,left right center 默认是center
pad: 标题与图表样式顶部的距离
Axes对象用set_title()方法添加标题
实例
plt.title('拼多多平台子类目的销售额')
添加图例
legend(handles, labels , loc, bbox_to_anchor, ncol, title, shadow,
fancybox, *args, **kwargs)
handles,labels:图形识别构成的列表,还有图例项构成的列表,这两个参数应该接收相同的长度的列表,如果不一致,就会截断长的
loc:控制图例位置
字符串 | 说明 |
---|---|
best | 自适应 |
upper right | 右上方 |
upper left | 左上方 |
lower right | 右下方 |
right | 右方 |
center left | 中心偏左 |
center right | 中心偏右 |
lower center | 中心偏下 |
upper center | 中心偏上 |
center | 居中 |
bbox_to_anchor:控制图例布局,一个包含两个数据的元组,第一个是x第二个是y
ncol: 展示图例列数 默认是1
shadow:阴影默认None
fancybox: 是否圆角边框,默认是None
实例
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
data = [29665,3135.4,4292.4,5240.9,5543.4,5633.8,6414.5,9308.1,10353]
labels = ['童装','奶粉辅食','孕妈专区','西湖喂养','宝宝尿裤','春夏新品','童车童床','玩具文娱','童鞋']
plt.pie(data,labels = labels,radius = 0.8,autopct = '%.1f%%')
#设置标题
plt.title('拼多多平台子类目的销售额')
#添加图例
plt.legend(labels,loc = 'upper right',bbox_to_anchor = [1.3,1.1])
plt.show()
显示网格
显示指定样式的网格
grid(visible = None , which = 'major', axis = 'both', **kwargs)
visible:是否显示网格
which:表示网格类型,major minor both 默认major
axis: 表示显示哪个方向的网格,both x 和 y
linewidth of lw: 网格线的宽度
plt.grid(visible = True, axis = 'y', linewidth = 0.3)
添加参考线 and 参考区域
添加参考线
水平参考线
axhline(y = 0, xmin = 0, xmax = 1, linestyle = '-', **kwargs)
y:水平参考线的水平线
xmin:表示水平参考线的起始位置,默认为0
xmax: 终止位置 默认1
linestyle: 表示水平参考线的类型, 默认为实线
垂直参考线
axvline(x = 0, xmin = 0, xmax = 1, linestyle = '-', **kwargs)
实例
plt.axvline(x = 0, linestyle = '--')
plt.axhline(y = 0, linestyle = '--')
参考区域
水平参考区域
axhspan(ymin,ymax,xmin = 0,xmax = 1 **kwargs)
ymin:水平下限
ymax:上限
xmin: 垂直跨度下限
xmax:上限
垂直参考区域
axvspan(xmin,xmax,ymin = 0,ymax = 1 **kwargs)
实例
plt.axvspan(xmin = 0.5,xmax = 2.0, alpha = 0.3)
plt.axhspan(ymin = 0.5,ymax = 1.0, alpha = 0.3)
添加注释文本
添加指向型注释文本
指向的,就是有图标的
annotate(s, xy, *args, **kwargs)
s:注释文本
xy:注释点的坐标位置,可接受元组
xytext: 注释文本的坐标
xycoords: xy的坐标系统 默认是‘data’ ,代表折现图使用相同的坐标系统
arrowprops:箭头的属性字典
bbox: 注释文本的边框属性字典
对于arrowprops,另外一个作者写的更为详尽
plt.annotate("最小值",xy = (-np.pi / 2,-1.0),
xytext = (-(np.pi / 2),-0.5),
arrowprops = dict(arrowstyle="->"))
添加无指向型注释文本
text(x,y,s,fontdict = None, withdash = <deprecated parameter>, **kwargs)
x,y注释文本位置
s:内容
fontdict:控制文本的字典
bbox: 边框属性字典
horizontalalignment or ha :水平对齐方式, center right left
verticalalignment o va : 垂直对齐方式, center top bottom baseline center_baseline
实例
plt.text(3.1,0.1,"y=sin(x)",bbox = dict(alpha = 0.2))
添加表格
table(cellText, cellColours , cellLoc= 'right', colWidths = None
,rowLabels = None, rowColours = None, rowLoc = 'left', colLabels = None,
colColours = None, colLoc = 'center', loc = 'bottom', bbox = None,
edges = 'closed', **kwargs)
cellTest:单元格数据,是一个二维列表
cellColours: 单元格的背景颜色
cellLoc: 文本对齐方式, left right center 默认right
colWidth: 每列的宽
rowLabels: 行标题的文本
rowColors:行标题背景颜色
rowLoc:标题的对齐方式
colLabels: 表示列标题的文本
colLoc: 列标题的对齐方式
loc:表格与绘图区域的对齐方式
此外,Axes对象可以使用table方法为图表添加表格
实例
plt.table(cellText=[[6,6,6],[8,8,8]],
colWidths=[0.1] * 3,
rowLabels=['第一行','第二行'],
colLabels=['第一列','第二列','第三列'],loc = 'lower right')