目录
实例1:2019年中国电影票房排行榜(坐标轴的标签、刻度范围和刻度标签)
认识图表常用的辅助元素
用一个图演示哈
导入模块并设置中文
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
创建代表画布的Figure类的对象fig
fig = plt.figure()
在画布fig上添加坐标系风格的绘图区域ax
ax = fig.add_subplot(111)
设计图表
x = np.linspace(-np.pi, np.pi, 256, endpoint=True) #准备数据,在-Π与Π之间,以均匀步长生成256个点
y1, y2 = np.sin(x), np.cos(x)
使用legend()函数添加图例
lines = ax.plot(x, y1, x, y2)
ax.legend(lines,['正弦','余弦'])
使用xlabel()函数设置 x 轴的标签
ax.set_xlabel("x轴")
使用ylabel()函数设置 y 轴的标签,fontdict表示控制标签文本样式的字典
ax.set_ylabel("y轴",
labelpad = 25, # 表示标签与坐标轴边框(包括刻度和刻度标签)的距离
fontdict = {'color':'orange', # 标签颜色
'fontsize':'15', # 标签文本大小
'rotation':'45'}) # 字体旋转角度
使用xlim()函数设置 x 轴的刻度范围
ax.set_xlim(left = x.min() * 1.5, right = x.max() * 1.5)
# 设置x轴左位数和右位数(其实就是最小值和最大值,直接left=?或者xmin=?也可以,如left=-6/xmin=-6)
使用xticks()函数设置 x 轴的刻度标签
ax.set_xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$\pi/2$', r'$\pi$'])#在字符串前加r,意味着该字符串将被视为原始字符串,所有转义字符都被忽略
使用yticks()函数设置 y 轴的刻度标签,这里设为分数,用\frac{}{}
ax.set_yticks([-1.00, -0.75, -0.50, -0.25, 0.00, 0.25, 0.50, 0.75, 1.00],
[r'$-1$', r'$-\frac{3}{4}$', r'$-\frac{1}{2}$', r'$-\frac{1}{4}$',
r'$0$',
r'$\frac{1}{4}$', r'$\frac{1}{2}$', r'$\frac{3}{4}$', r'$1$'
]) # 编写数学表达式(更多参考matplotlib官网)
使用title()函数添加标题
ax.set_title("正弦曲线和余弦曲线")
展示图表
plt.show()
运行结果如下:
现在做实例
实例1:2019年中国电影票房排行榜(坐标轴的标签、刻度范围和刻度标签)(水平条图)
导入模块并设置中文
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams["axes.unicode_minus"] = False
设置标签名称
labels = ["哪吒之魔童降世" ,"流浪地球" ,"复仇者联盟 4:终局之战",
"疯狂的外星人", "飞驰人生","烈火英雄" ,"蜘蛛侠:英雄远征",
"速度与激情:特别行动","扫毒 2:天地对决","大黄蜂","惊奇队长",
"比悲伤更悲伤的故事","哥斯拉 2:怪兽之王","阿丽塔:战斗天使",
"银河补习班"]
导入数据
bar_width = [48.57,46.18,42.05,21.83,17.03,16.70,14.01,13.84,
12.85,11.38,10.25,9.46,9.27,8.88,8.64]
创建画布并添加绘图区域
fig = plt.figure()
ax = fig.add_subplot(111
y_data = range(len(labels))
制作水平条图
ax.barh(y_data,bar_width,height=0.2,color='orange')
使用 xlabel() 和 ylabel() 设置 x 轴和 y 轴的标签
ax.set_xlabel(" 总票房 ( 亿元 )",
fontdict = {'color':'green', # 标签颜色
'fontsize':'15'}) # 标签文本大小
ax.set_ylabel(" 电影名称 ",
fontdict = {'color':'green',
'fontsize':'15'})
设置 y 轴的刻度线位置、 刻度标签(两个独立方法)
ax.set_yticks(y_data)
ax.set_yticklabels(labels)
使用title()函数添加标题
ax.set_title("2019年中国电影票房排行榜Top15的条形图")
展示图表
plt.show()
运行结果如下:
实例2:支付宝月账单报告(添加标题和图例)(饼图)
导入模块并设置中文
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams["axes.unicode_minus"] = False
外侧说明文字
kinds=['购物','人情往来','餐饮美食','通信物流','生活日用','交通出行','休闲娱乐','其他']
导入数据
money_scale=[800/3000,100/3000,1000/3000,300/3000,
200/3000,200/3000,200/3000,200/3000]
创建画布并添加绘画区域
fig = plt.figure( )
ax = fig.add_subplot(111)
爆炸程度
dev_position=[0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1]
绘制图表
ax.pie(money_scale,autopct='%3.1f%%',shadow=True,
explode=dev_position,startangle=90)
使用title()函数添加标题
ax.set_title('支付宝月账单报告')
使用legend()函数添加图例
ax.legend(kinds,
loc='upper right', # 用于粗略调整图例在整个绘图区域上的位置,在这用的是位置字符串,也可以用位置编码,详见下图
bbox_to_anchor=[1.3,1.1]) # 用于精细调整图例在整个绘图区域上的位置:数值1越大越偏右,数值2越大越偏上
展示图表
plt.show()
运行结果如下:
实例3:汽车速度与制动距离的关系(添加网格)(气泡图)
导入模块并设置中文
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams["axes.unicode_minus"] = False
导入数据
x_speed = np.arange(10, 210, 10)
y_distance = np.array([0.5, 2.0, 4.4, 7.9, 12.3,
17.7, 24.1, 31.5, 39.9, 49.2,
59.5, 70.8, 83.1, 96.4, 110.7,
126.0, 142.2, 159.4, 177.6, 196.8])
生成一个等距递增数列
area=np.linspace(20,300,20)
创建画布并添加绘画区域
fig = plt.figure( )
ax = fig.add_subplot(111)
绘制图表
ax.scatter(x_speed,y_distance,s=area,alpha=0.9,linewidths=0.3)
使用 xlabel() 和 ylabel() 设置 x 轴和 y 轴的标签
ax.set_xlabel('速度(km/h)')
ax.set_ylabel('制动距离(m)')
调整坐标轴刻度(令每个点刚好在横轴的刻度上)
ax.set_xticks(x_speed)
使用title()函数添加标题
ax.set_title('汽车速度与制动距离关系的散点图--添加网格')
显示网格
ax.grid(b=True,linewidth=0.3)
展示图表
plt.show()
运行结果如下: