自学整理记录,大神见笑
-
最流行的Python底层绘图库,主要做数据可视化图表,模仿MATLAB构建,名字也取自MATLAB
-
网站可以查看事例代码及样式,https://matplotlib.org/
-
其他绘图工具
1.前端框架百度ECharts,图片可交互,网站http://www.echartsjs.com/index.html
2.python框架plotly,画图界的github,图片可交互,网站https://plot.ly/python/
3.python框架seaborn,类似matplotlib,,seaborn和matplotlib图片都不可交互网站http://seaborn.pydata.org/examples/index.html -
导入pyplot
from matplotlib import pyplot as plt
- 常用统计图
1.折线图,主要查看变化
2.直方图,绘制连续型数据,主要是统计
3.条形图,绘制离散型数据,主要是统计
4.散点图,主要查看分布规律
折线图
- 提供数据,指定x横轴的值,指定y纵轴的值
x = range(2, 26, 2)
y = [15, 13, 14.5, 17, 20, 25, 26, 26, 24, 22, 18, 15]
- 绘图,传入x和y,通过plot绘制出折线图
plt.plot(x, y)
- 展示图在执行程序的时候展示图形
plt.show()
- 注:x和y的列表个数要相同,否则会报错ValueError
折线图扩展
- 设置图片大小和像素
plt.figure(figsize=(20, 8), dpi=80)
-
注:要写在绘图之前
-
注:figsize两个参数分别表示长度和宽度
-
注:dpi是让图像更清晰
-
保存图片
plt.savefig("./test1.png")
-
注:要写在绘图之后
-
注:参数是保存的路径
-
注:自己加后缀保存成自己想要的格式,比如保存为svg矢量图格式,放大不会有锯齿
-
轴刻度
plt.xticks(range(2, 26, 2))
plt.yticks(range(min(y) + 1, max(y) + 1))
-
注:上面代码分别为设置x轴刻度和y轴刻度
-
调整轴刻度显示信息(包含显示内容、中文乱码)
my_font = font_manager.FontProperties(fname="C:\Windows\ttt\simsun.ttc", size=14)
# 调整x轴刻度信息
_x = list(x)
_xtick_labels = ["10点{}分".format(i) for i in range(60)]
_xtick_labels += ["11点{}分".format(i) for i in range(60)]
plt.xticks(_x[::3], _xtick_labels[::3], rotation=45, fontproperties=my_font)
- 注:需要导包
from matplotlib import font_manager
-
注:rotation表示旋转角度,顺时针旋转
-
注:fontproperties正常显示中文字体
-
注:fename后面的路径一定要手动输入
-
注:可以在FontProperties中的参数size设置字体大小
-
注:y轴同理
-
x轴、y轴和标题的提示信息
plt.xlabel("时间", fontproperties=my_font)
plt.ylabel("时间/温度(℃)", fontproperties=my_font)
plt.title("10点到12点每分钟温度变化图", fontproperties=my_font)
-
注:xlabel即x轴信息,ylabel即y轴信息,title即标题
-
注:如果中文乱码,则在后面添加参数fontproperties即可
-
绘制网格
plt.grid(alpha=0.4)
-
注:alpha表示网格透明度,0透明,1不透明
-
注:网格的密度,由x轴和y轴刻度控制
-
绘制多个线条
plt.plot(x, y_1)
plt.plot(x, y_2)
-
注:再plot一次就会画出多一条线
-
添加图例
plt.plot(x, y_1, label="自己")
plt.plot(x, y_2, label="同桌")
...
plt.legend(prop=my_font, loc="upper right")
-
注:两个步骤,首先在plot方法中添加参数label,然后写添加图例方法legeng()
-
注:legend中prop参数是解决中文乱码
-
注:legend中loc参数是图例放的位置,默认是best,系统会放在最合适的位置,自己可以写英文或者汉字,查原码即可
-
线条样式(颜色、线条风格,线条宽度等)
plt.plot(x, y_1,color="r", linestyle="--", linewidth=5)
- 注:color参数可以填颜色字符,或者十六进制颜色代码都可以
- 注:linestyle参数可以改变线条风格
- 注:linewidth参数越大越粗
-
添加文本注释
-
添加水印
散点图
- 绘图,传入x和y,通过scatter绘制出散点图
plt.scatter(x, y)
- 注:x和y的列表个数要相同,否则会报错ValueError
- 注: 散点图扩展与折线图一样
条形图
- 绘图,传入x和y,通过bar绘制出条形图
plt.bar(x, y)
- 注:默认会竖着显示
条形图扩展
- 横着显示
plt.barh(x, y)
- 条形宽度
plt.bar(x, y, width=0.3)
plt.barh(x, y, height=0.3)
- 注:竖着使用width,横着使用height
- 注:其余扩展与折线图类似
- 注:绘制多次条形图,即将x轴向右移动即可,但移动的距离,次数总和不能超过1,且宽度要合适,如下图
直方图
- 绘图,传入a和组数20,通过hist绘制出直方图
plt.hist(a, 20)
- 注:a参数是原始数据,20参数是组数,即有多少个直方
- 注:直方图会自己计算数据出现的个数,显示在图上,所以需要原始数据,不能用统计好之后的数据
- 注:如果是统计好的数据,依然想绘制成直方图的样式,使用条形图即可
- 注:使用条形图时画出直方图效果,需要将width设置为1,并且x轴刻度向左移动0.5即可
直方图扩展
- 计算组数
d = 5
num_bins = (max(a) - min(a)) // d
...
plt.hist(a, num_bins)
plt.xticks(range(min(a), max(a)+d, d))
-
注:num_bins即组数,d为组距
-
注:最大值与最小值的差除组距,一定要保证整除,否则x轴显示会偏移
-
注:xticks方法中,max+d保证值都能显示完全
-
频率分布直方图
plt.hist(a, num_bins, normed=True)
- 注:正常y轴会显示出现的区域内出现的个数
- 注:normed设置为True,即会将y轴显示为小数格式的频率
网友评论