Matplotlib图形详解
一,全局的设置
import matplotlib as mpl
#设置中文字体的显示问题
mpl.rcParams['font.family'] = 'SimHei'
#文本在图上的任意位置显示
plt.text(13,35.2,'基础体温',bbox={'facecolor':'green', 'alpha':0.5, 'pad':10})
ax = plt.gca() #坐标轴实例
#设置坐标轴的间隔
ax.xaxis.set_major_locator(plt.MultipleLocator(1))
ax.yaxis.set_major_locator(plt.MultipleLocator(0.1))
二,plot图 (条形图)
标记
特点 | 描述 |
---|---|
'.' |
点标记 |
',' |
像素标记 |
'o' |
圆圈标记 |
'v' |
triangle_down 标记 |
'^' |
triangle_up 标记 |
'<' |
triangle_left 标记 |
'>' |
triangle_right 标记 |
'1' |
tri_down 标记 |
'2' |
tri_up 标记 |
'3' |
三左标记 |
'4' |
tri_right 标记 |
'8' |
八角形标记 |
's' |
方形标记 |
'p' |
五边形标记 |
'P' |
加(填充)标记 |
'*' |
星标 |
'h' |
hexagon1 标记 |
'H' |
hexagon2 标记 |
'+' |
加号标记 |
'x' |
x 标记 |
'X' |
x(填充)标记 |
'D' |
钻石标记 |
'd' |
薄钻石标记 |
`' | '` |
'_' |
线标记 |
线型
特点 | 描述 |
---|---|
'-' |
实线样式 |
'--' |
虚线样式 |
'-.' |
点划线样式 |
':' |
虚线样式 |
'b' #默认形状的蓝色标记
'or' #红圈
'-g' #绿色实线
'——' #使用默认颜色的虚线
'^k:' #用虚线连接的黑色三角形标记
plot([1, 2, 3], [1, 2, 3], 'go-', label='line 1', linewidth=2)
plot(x, y, color='green', marker='o', linestyle='dashed',
linewidth=2, markersize=12)
三,bar柱状图
plt.title('河北省景点总面积和游客量对比图',fontdict={'fontsize': 22 ,'color': 'black'})
plt.bar(hb_data['名称'],hb_data['总面积(平方公里)'],alpha=0.9, width = 0.35, facecolor = 'lightskyblue', edgecolor = 'white', label='总面积(平方公里)', lw=1)
plt.bar(np.arange(len(hb_data['名称']))+0.35,hb_data['游客量(万人次)'],alpha=0.9, width = 0.35, facecolor = 'indianred', edgecolor = 'white', label='游客量(万人次)', lw=1)
plt.legend(loc="upper left")
for x, y in enumerate(hb_data['总面积(平方公里)']):
plt.text(x, y + 10, '%s' % y, ha='center', va='bottom')
for x, y in enumerate(hb_data['游客量(万人次)']):
plt.text(x+0.35, y + 10, '%s' % y, ha='center', va='bottom')
plt.show()
四,pie饼图
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams["font.family"] = ["simhei"]
# 绘制圆环图,并返回饼块对象
data = dict(zip(hb_data['名称'],hb_data['游客量(万人次)']))
# 构造数据
data = pd.DataFrame([data])
# 绘制圆环图,并返回饼块对象
wedges, texts = plt.pie(data.iloc[0], wedgeprops={"width": 0.5})
# 构造annotate函数的**kwargs参数,设置引导线线型
kw = dict(arrowprops=dict(arrowstyle="-"), zorder=0, va="center")
# 遍历饼块绘制注释标签和引导线
for i, p in enumerate(wedges):
# 根据matplotlib.patches.Wedge对象的theta1和theta2参数计算饼块均分点的角度
ang = (p.theta2 - p.theta1) / 2.0 + p.theta1
# 根据角度的弧度计算 饼块均分点的坐标(引导线的起点)
y = np.sin(np.deg2rad(ang))
x = np.cos(np.deg2rad(ang))
# print(p.theta1, p.theta2, ang, np.deg2rad(ang), x, y)
# 演示引导线起点位置
plt.plot(x, y, "or")
# 根据x的值即角度所在象限确定引导线的对齐方式
horizontalalignment = {-1: "right", 1: "left"}[int(np.sign(x))]
# 设置引导线的连接方式
connectionstyle = "angle,angleA=0,angleB={}".format(ang)
kw["arrowprops"].update({"connectionstyle": connectionstyle})
# 绘制注释标签和引导线
plt.annotate(
data.columns[i],
xy=(x, y),
xytext=(1.35 * np.sign(x), 1.2 * y),
horizontalalignment=horizontalalignment,
**kw
)
plt.pie(data.iloc[0],autopct = '%0.2f%%',wedgeprops={"width": 0.5},textprops={'fontsize':18,'color':'k'})
plt.title("河北省各景点游客量占比",fontdict={'fontsize': 22 ,'color': 'black'})
plt.show()