1.添加参考线和参考区域
(1) 使用axhline()绘制水平参考线
语法:axhline(y=0,xmin=0,xmax=1,linestyle='-',**kwargs)
y: 表示水平参考线的纵坐标.
xmin: 表示水平参考线的起始位置,默认为0 .
xmax: 表示水平参考线的最终位置,默认为1.
linestyle: 表示水平参考线的类型,默认为实线.
(2) 使用axvline()绘制垂直参考线
语法:axvline(x=0,ymin=0,ymax=1,linestyle='-',**kwargs)
x: 表示水平参考线的纵坐标.
ymin: 表示水平参考线的起始位置,默认为0 .
ymax: 表示水平参考线的最终位置,默认为1.
linestyle: 表示水平参考线的类型,默认为实线.
# 导入模块
import numpy as np
import matplotlib.pyplot as plt
# 设置中文
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
#添加标题
plt.title("正弦曲线和余弦曲线")#默认为居中
# 设置正弦和余弦曲线数据
x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
y1, y2 = np.sin(x), np.cos(x)
# 画出图线
plt.plot(x, y1, x, y2)
# 添加图例
lines = plt.plot(x, y1, x, y2)
plt.legend(lines, ['正弦', '余弦'], shadow=True, fancybox=True)
# 设置x,y轴标签
plt.xlabel("x轴")
plt.ylabel("y轴")
# 展示图像
plt.show()
#添加参考线
plt.axvline(x=0, linestyle='--')
plt.axhline(y=0, linestyle='--')
运行结果如下:
(3) 使用axhspan()绘制水平参考区域
语法:axhspan(ymin,ymax,xmin=0,xmax=1,**kwargs)
ymin:表示水平跨度的下限,以数据为单位.
ymax:表示水平跨度的上限,以数据为单位.
xmin:表示垂直跨度的下限,以轴为单位,默认值为0.
xmax:表示垂直跨度的上限,以轴为单位,默认值为1.
(4) axvspan()绘制水平参考区域
语法:axvspan(xmin,xmax,ymin=0,ymax=1,**kwargs)
xmin:表示垂直跨度的下限.
xmax:表示垂直跨度的上限.
#添加参考区域
plt.axvspan(xmin=0.5,ymax=2.0,alpha=0.3)
plt.axhspan(ymin=0.5,ymax=1.0,alpha=0.3)
2.添加注释
(1) 添加指向型注释文本
语法:annotate(s,xy,*args,**kwargs)
·s:表示注释文本的内容。
·xy:表示被注释的点的坐标位置,接收元组(xy)。
·xytext:表示注释文本所在的坐标位置,接收元组(x,y)。
·xycoords:表示xy的坐标系统,默认值为“data”,代表与折线图使用相同的坐标系统。
·arrowprops:表示指示箭头的属性字典。
·bbox:表示注释文本的边框属性字典。
#添加指向型注释文本
plt.annotate("最小值",
xy=(- np.pi/2,-1),
xytext=(-(np.pi/2),-0.5),
arrowprops=dict(arrowstyle="->"))
运行如下:
(2) 添加无指向型注释文本
语法:text(x,y,s,fontdict=None, withdash=<deprecated parameter>,**kwargs)
·x,y:表示注释文本的位置。
·s:表示注释文本的内容。
·fontdict:表示控制字体的字典。
·bbox:表示注释文本的边框属性字典。
·horizontalalignment 或 ha:表示水平对齐的方式,可以取值为center、right或left。· ·verticalalignment或 va:表示垂直对齐的方式,可以取值为 center、top、bottom、baseline或 center_baseline。
#添加无指向型注释文本
plt.text(3.10,0.10,"y=sin(x)",bbox=dict(alpha=0.2))
运行结果如下:
3.添加表格
添加自定义样式的表格
语法:table(cellText=None, cellColours=None, cellLoc='right', colWidths=None,
rowLabels=None, rowColours=None, rowLoc='left', colLabels=None,
colColours=None, colLoc='center', loc='bottom',
bbox=None, edges='closed', **kwargs)
·cellText:表示表格单元格中的数据,是一个二维列表。
·cellColours:表示单元格的背景颜色。
·celLoc:表示单元格文本的对齐方式,支持'ef、'right 和'center' 三种取值,聚证'right'。
·colWidths:表示每列的宽度。
·rowLabels:表示行标题的文本。
·rowColours :表示行标题所在单元格的背景颜色。
·rowLoc:表示行标题的对齐方式。
·colLabels:表示列标题的文本。
·colColours:表示列标题所在单元格的背景颜色。
·colLoc:表示列标题的对齐方式。
·loc:表示表格与绘图区域的对齐方式。
#添加表格
plt.table(cellText=[[6,6,6],[8,8,8]],
colWidths=[0.1]*3,
rowLabels=['第一行','第二行'],
colLabels=['第一列','第二列','第三列'],loc='lower right')
运行效果如下:
实例:果酱面包配料比例
需求一: 图例用4列展示
需求二: 表格填充你喜欢的任意颜色
需求三: 调整图例和表格位置,如运行效果图所示(不要求完全一致,但应做到相似度8成上)。
代码如下:
# 导入模块
import numpy as np
import matplotlib.pyplot as plt
# 显示中文
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
# 绘制饼图
kinds = ['面粉', '全麦粉', '酵母', '苹果酱', '鸡蛋', '黄油', '盐', '白糖']# 配料名称
weight = [250, 150, 4, 250, 50, 30, 4, 20] # 重量(g)
plt.pie(weight, autopct='%3.1f%%') # 绘制饼图,取小数点后一位
# 添加图例(通过bbox_to_anchor精细调整图例位置)
plt.legend(kinds, # 配料名称
ncol=4, # 4列图例
bbox_to_anchor=[1.2, 0.75]) # 精细调整图例位置(在饼图右上方)
# 添加表格(通过bbox精细调整表格位置和大小)
plt.table(cellText=[weight], # 表示单元格中的数据:重量(g)
cellLoc='center', # 表示单元格文本对齐方式为:center
rowLabels=['重量(g)'], # 每列的名称
colLabels=kinds, # 每列的名称(配料名称)
bbox=[1.05, 0.17, 0.9, 0.25], # 表格所在位置(在饼图右下方)
rowColours='b', # 填充每行名称的表格颜色
colColours='r' * 8) # 填充每列名称的表格颜色
# 展示图表
plt.show()