完善统计图形

(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()

运行结果: 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐