第四章 完善统计图形
这一部分主要介绍添加图例,标题格式,坐标轴刻度,丰富图标内容等方面。
4.1 添加图例和标题
在绘图区域会出现多个统计图形,需要对这些图形加以说明,使得其他人可以更好地观察。
添加标签说明,标签说明就是图例。
通过绘制正弦、余弦曲线来说明添加图例和标题的操作方法。
4.1.1 图例和标题的设置
重点介绍legend() 和 title 方法。
使用Tex对文本进行渲染,符号为:r"$$", 在$$ 之间加入文本
# 代码
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams["font.sans-serif"] = ["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False
x = np.linspace(-2*np.pi,2*np.pi,200)
y = np.sin(x)
y1 = np.cos(x)
plt.plot(x,y,label=r"$\sin(x)$")
plt.plot(x,y1,label=r"$\cos(x)$")
plt.legend(loc="lower left")
plt.title("正弦和余弦曲线")
plt.show()
output_2_0.png
4.1.2 案例1—— 图例的展示样式调整
通过一个例子来深入了解,改变图例的样式。
比较常用的参数是loc, title也会使用
plt.legend(loc = "upper left",ncol=3,bbox_to_anchor=(0.05,0.95),
title="power function", shadow=True,fancybox=True)
其他的根据实际需要
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",ncol=3,bbox_to_anchor=(0.05,0.95),
title="power function", shadow=True,fancybox=True)
plt.show()
output_4_0.png
4.1.3 标题的展示样式的调整
主要通过title() 的参数进行调整, 主要的风格样式包括字体样式、字体大小、字体颜色等等。
x = np.linspace(-2,2,100)
y = np.exp(x)
plt.plot(x,y,ls="-",lw=2,c="r")
plt.title("center title")
plt.title("Left Demo",loc="left",
fontdict={"size":"xx-large",
"color":"y",
"family":"TImes New Roman"})
plt.title("Right Demo",loc="right",family="Comic Sans MS",
size = 20,
style="oblique",
color="c")
plt.show()
output_6_0.png
4.1.4 案例3——带图例的饼图
为饼图添加图例,实现绘图区域更加清晰的布局。
pie()函数,及其参数的调整。
elements = ["面粉","砂糖","奶油","草莓酱","坚果"]
weight=[40,15,20,10,15]
color = ["r","y","b","g","y"]
wedges,texts,autotexts = plt.pie(weight,
autopct="%3.1f%%",
textprops=dict(color="w"),
colors=color)
plt.legend(wedges,
elements,
fontsize=12,
title="配料表",
loc="center left",
bbox_to_anchor=(0.91,0,0.3,1))
plt.setp(autotexts,size=15,weight="bold")
plt.setp(texts,size=12)
plt.title("果酱面包配料比例表")
plt.show()
output_8_0.png
4.2 调整刻度范围和刻度标签
主要使用xlim(),ylim() ,xticks(),yticks()等函数
subplot()用于绘制网格区域
x = np.linspace(-2*np.pi,2*np.pi,200)
y = np.sin(x)
plt.subplot(211)
plt.plot(x,y)
plt.subplot(212)
plt.xlim(-2*np.pi,2*np.pi)
plt.xticks([-2*np.pi,-3*np.pi/2.0,-1*np.pi,-1*np.pi/2.0,0,1*np.pi/2.0,1*np.pi,3*np.pi/2.0,2*np.pi],
[r"$-2\pi$",r"$-3\pi/2$",r"$-\pi$",r"$-\pi/2$",r"$0$",r"$\pi/2$",r"$\pi$",r"$3\pi/2$",r"$2\pi$"])
plt.plot(x,y)
plt.show()
output_10_0.png
4.2.3 案例——逆序设置坐标轴
通过调整xlim(xmax,xmin),调整xmax和xmin的位置
time = np.arange(1,11,0.5)
machinePower = np.power(time,2)+0.7
plt.plot(time,machinePower,ls="-",lw=2,c="r")
plt.xlim(10,1)
plt.xlabel("使用年限")
plt.ylabel("机器功率")
plt.grid(ls=":",lw=1,c="gray",alpha=0.5)
plt.show()
output_12_0.png
4.3 向统计图形添加表格
为饼图添加表格
使用pie(),和 plt.table()
labels = ["A难度","B难度","C难度","D难度"]
students = [0.35,0.15,0.2,0.3]
explode = (0.1,0.1,0.1,0.1)
c = ["g","r","y","b"]
plt.pie(students,explode=explode,labels=labels,autopct="%1.1f%%",
startangle=45,shadow=True,colors=c)
snum = [[350,150,200,300]]
rlabel = ["学生人数"]
plt.table(cellText=snum,
cellLoc="center",
colWidths=[0.1] * 4,
colColours=c,
colLabels=labels,
rowLabels=rlabel,
rowLoc="center",
loc="bottom")
plt.show()
output_14_0.png
references
1、《Python数据可视化之matplotlib实践》 刘大成著











网友评论