【学习笔记】python数据可视化之matplotlib实践第四章
完善统计图
·
完善统计图形
(1)添加图例和标题
1.图例的展示样式调整
以下介绍一下plt.legend()函数中几个陌生的参数:
| loc | 指定图例位置,不仅可以使用字符串还可以使用字符串对应的数字(这里不进行介绍) |
| bbox_to_anchor | 手动调整图例的位置 |
| ncol | 指定图例中列的数量 |
| title | 为图例增加一个标题 |
| shadow | 参数为True,显示阴影效果 |
| fancybox | 参数为True,图例背景使用带有圆角的矩形框 |
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0,2.1,0.1)
y = np.power(x,3)
y1 = np.power(x,2)
y2 = np.power(x,1)
plt.plot(x,y,ls = '-',lw = 2,label = '$x^{3}$')
plt.plot(x,y1,ls = '-',lw = 2,c = 'r',label = '$x^{2}$')
plt.plot(x,y2,ls = '-',lw = 2,c = 'y',label = '$x^{1}$')
plt.legend(loc = 'upper left',bbox_to_anchor = (0.05,0.95),ncol = 3,title = 'power function',shadow = True,fancybox = True)
plt.show()
运行结果:
2.标题的展示样式的调整
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-2,2,1000)
y = np.exp(x)
plt.plot(x,y,ls = '-',lw = 2,color = 'g')
plt.title('Center demo')
plt.title('Left Demo',loc = 'left',fontdict = {'size':'xx-large','color':'r','family':'Times New Roman'})
plt.title('right demo',loc = 'right',family = 'Comic sans MS',size = 20,style = 'oblique',color = 'c')
plt.show()
运行结果:
3.带图例的饼图
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
elements = ['面粉', '砂糖', '奶油', '草莓酱', '坚果']
weight1 = [40, 15, 20, 10, 15]
colors = ['#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#e41a1c']
wedges1, texts1, autotexts1 = plt.pie(weight1, autopct='%3.1f%%',colors = colors,textprops=dict(color='w'), )
# bbox_to_anchor=(0.91, 0, 0.3, 1) 设置图例相对于图表的位置
plt.legend(wedges1, elements, fontsize=12, title='配料表', loc='center left', bbox_to_anchor=(0.91, 0, 0.3, 1))
# plt.setp()函数用来设置图形对象的一系列属性
# wedges1表示第一个饼图的扇形部分
# autotexts1表示饼图中的百分比文本
# texts1表示饼图中的标签文本
plt.setp(autotexts1, size=15, weight='bold')
plt.setp(texts1, size=12)
plt.title('不同果酱面包配料比例表')
plt.show()
运行结果:
(2)调整刻度范围和刻度标签
逆序设置坐标轴刻度标签
将xlim(xmin,xmax)中参数调换顺序实现逆序的可视化
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
time = np.arange(1,11,0.5)
machinepower = np.power(time,2) + 0.7
plt.plot(time,machinepower,linestyle = '-',linewidth = 2,color = 'r')
plt.xlim(10,1)
plt.xlabel('使用年限')
plt.ylabel('机器功率')
plt.title('机器损耗曲线')
plt.grid(ls = ':',lw = 1,color = 'gray',alpha = 0.5)
plt.show()
运行结果:
(3)向统计图形添加表格
plt.table()函数中的一些参数介绍:
| cellText | 表格的数值 |
| cellLoc | 表格中的数据对齐位置 |
| colWidths | 表格每列的宽度 |
| colLabels | 表格每列的列名称 |
| colColours | 表格每列的列名称所在单元格的颜色 |
| rowLabels | 表格每行的行名称 |
| rowLoc | 表格每行的行名称对齐位置 |
| loc | 表格在画布中的位置 |
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
labels = 'A难度水平', 'B难度水平', 'C难度水平', 'D难度水平'
students = [0.35, 0.15, 0.2, 0.3]
colors = ['#377eb8', '#4daf4a', '#984ea3', '#ff7f00']
explode = (0.1, 0.1, 0.1, 0.1)
plt.pie(students, explode=explode, labels=labels, autopct='%3.1f%%', startangle=45, shadow=True, colors=colors)
plt.title('选择不同难度测试试卷的学生占比')
collabel = ['A难度水平', 'B难度水平', 'C难度水平', 'D难度水平']
rowlabel = ['学生选择试卷人数']
studentvalue = [[350,150,200,300]]
colcolor = ['#377eb8', '#4daf4a', '#984ea3', '#ff7f00']
plt.table(cellText=studentvalue,cellLoc='center',colWidths=[0.1]*4,colLabels=collabel,rowLabels=rowlabel,rowLoc='center',loc = 'bottom')
plt.show()
运行结果:
更多推荐
所有评论(0)