视频学习地址
安装
pip install matplotlib
常用统计图对比:
- 折线图:以折线的上升或者下降来表示统计数量的增减变化的统计图
- 特点:能够显示数据的变化趋势,反映事物的变化情况(变化)
- 直方图:由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据范围,纵轴表示分布情况
- 特点:绘制连续性的数据,詹氏一族或者多组数据的分布情况(统计)
- 条形图:排列在工作表的列或行中的数据可以绘制到条形图中。
- 特点:绘制离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计)
- 散点图 :用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或者总结坐标点的分布模式
- 特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)
折线图
- 简单示例
from matplotlib import pyplot as plt
x = range(2, 26, 2)
y = [15,13,14.5,17,20,25,26,26,27,22,18,15]
plt.plot(x, y)
plt.show()
为折线图添加更多元素(修改默认元素)
- 设置图片大小(想要一个高清无码大图)
from matplotlib import pyplot as plt
fig = plt.figure(figsize=(20.8), dpi=80)
# figure图形图标的意思,在这里值得就是画的图,figsize,宽高,dpi像素,dpi每英寸的像素
# 通过实例化一个fihure并且传递参数,能够在后台自动使用改figure实例
# 在图像模糊的时候可以传入dpi参数,让图片更加清晰
- 保存到本地
- 描述信息,比如x轴和y轴表示什么,这个图表示什么
- 调整x或者y的刻度的间距
- 标记处特殊的点(比如告诉别人最高点和最低点)
- 给图片添加一个水印(防伪,防止盗用)
from matplotlib import pyplot as plt
x = range(2, 26, 2)
y = [15,13,14.5,17,20,25,26,26,27,22,18,15]
# 设置图片大小
plt.figure(figsize=(20,8), dpi=80)
# 绘图
plt.plot(x, y)
# 绘制x轴的刻度
plt.xticks(x) # 原生x值 # 自定义,传列表即可,[range(1,24)],
# 设置y轴的刻度
plt.xticks(range(min(y), max(y)+1))
# 保存图片,可以保存为svg这种矢量图格式,放大不会有锯齿
plt.savefig('./1.png')
plt.show()
显示中文刻度
matpoltlib默认不支持中文字符,外国人写的东西
import random
from matplotlib import pyplot as plt
from matplotlib import font_manager
# 方式一(失败率高):
# font = {'family': 'MicroSoft YaHei',
# 'weight': 'bold',
# 'size': 'larger'}
#
# matplotlib.rc("font", **font)
# # matplotlib.rc("font", family='MicroSoft YaHei',weight='bold')
# 方式二:
my_font = font_manager.FontProperties(fname=r'c:\windows\fonts\msyh.ttc')
x = range(0,120)
y = [random.randint(20, 35) for i in range(120)]
plt.figure(figsize=(20, 8),dpi=80)
plt.plot(x,y)
# 调整x轴的刻度
_x = x[::3]
_xtick_labels = ['哈哈,{}'.format(i) for i in _x]
plt.xticks(_x, _xtick_labels, rotation=45, fontproperties=my_font)
# 添加描述信息
plt.xlabel("时间",fontproperties=my_font)
plt.ylabel("温度",fontproperties=my_font)
plt.title("时间温度图",fontproperties=my_font)
plt.show()
练习1:
x轴表示年龄,11-30岁
y轴表示女友数量
from matplotlib import pyplot as plt, font_manager
my_font = font_manager.FontProperties(fname=r'c:\windows\fonts\msyh.ttc')
y = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
x = range(11,31)
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y)
# 设置x轴刻度
_xtrick_labels = [f'{i}岁' for i in x]
plt.xticks(x, _xtrick_labels, fontproperties=my_font)
plt.yticks(range(0,9))
# 绘制网格
plt.grid(alpha=0.4)
plt.show()
练习2:
添加两个图形
from matplotlib import pyplot as plt, font_manager
my_font = font_manager.FontProperties(fname=r'c:\windows\fonts\msyh.ttc')
y_1 = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
y_2 = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]
x = range(11,31)
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y_1, label='自己',color="blue",linestyle=':', alpha=0.5) # 颜色,线条类型,透明度
plt.plot(x,y_2, label='另一个')
# 设置x轴刻度
_xtrick_labels = [f'{i}岁' for i in x]
plt.xticks(x, _xtrick_labels, fontproperties=my_font)
plt.yticks(range(0,9))
# 添加图例
plt.legend(prop=my_font,loc="upper left") # loc表示图例位置,默认右上角 注意:设置字体,是prop不是properies,只有这里是例外
# 绘制网格
plt.grid(alpha=0.4)
plt.show()