matplotlib是python中常用的,也是较为基础的数据可视化模块,scrapy、(numpy和pandas)、matplotlib三步走能够很好解决数据获取、处理和可视化。
前言
a 数据可视化的方式一直有很多工具,Excel、MATLAB、SPSS、R语言等,每一种工具都有其特点,但python中较为基础的数据可视化模块是matplotlib,在此记录一下学习历程。
一、matplolib
matplotlib模块有很多,常用的或者基础的模块其实就是pyplot,用作画图。其中基础图有折线图(plot)、散点图(scatter)、条形图(bar)、柱状图(barh)、直方图(hist)、饼图(pie)等,在这里我会总结常用绘图套路,希望和大家交流学习。
二、使用步骤
1.引入库
代码如下(示例):
from matplotlib import font_manager # 语言格式
import matplotlib.pyplot as plt
2.常用绘图方式
首先要解析一下绘图都有哪些元素:
- 底层图像,为白色底图,代码方式为plt.figure(),其中figure中有属性figsize(图像大小)、dpi(像素)。
fig = plt.figure(figsize=(20, 8), dpi=80) # figsize设置图像大小,dpi设置像素(清晰度)
- x和y轴数据,要求x和y轴数据数量相同,然后进行绘图(折线图)。其中label是加图示,color为线条颜色:r (red红色)、g (green绿色)、b (blue 蓝色)、w (white 白色)、y (yellow 黄色)、k (black黑色);线条类型:-(实线)、–(虚线)、:(点虚线,虚线)、’’(留空或者空格);linewidth表示线条宽度;alpha表示透明度。
- 显示图形:show
# 需要显示的x轴数据
x_data = [1, 2, 3, 4]
# 需要显示的y轴数据
y_data = [5, 5, 23, 190]
# 绘图(折线图)
plt.plot(x_data, y_data, label="同桌",color="g",linestyle="--", linewidth=0.5, alpha=0.5)
# 显示图形
plt.show()
- 设置x轴和y轴的刻度,这里需要注意如果引入中文的话,需要首先引入自己计算机的中文语言格式,需要设置 font_manager.FontProperties中的fname引入计算机中中文语言的路径(百度可查)。x轴刻度需要与x的数据一一对应,因此数据长度应该一样,运用plt.xticks()方法并且设置fontproperties为my_font。rotation可以设置旋转度数。
# 设置语言格式,需要引用本计算机的中文语言
my_font = font_manager.FontProperties(fname="/System/Library/Fonts/PingFang.ttc")
# 调整x轴显示间距,可以对x轴数据进行切片读取,python会帮我们对应
#plt.xticks(x[::2])
# 设置x轴刻度,fontptoperties可以显示文字类型,rotation可以设置旋转度数
_xtick_label = ['想要显示的数据是:{}'.format(i) for i in x_data]
plt.xticks(x_data, _xtick_label, fontproperties=my_font, rotation=90)
- 添加图形描述信息:x轴标签、y轴标签和 title的标记
# 设置x轴和y轴label
plt.xlabel('随意显示数据1.0', font_manager=my_font)
plt.ylabel('随意显示数据2.0', font_manager=my_font)
# 设置title
plt.title('整张表想要显示的数据', font_manager=my_font)
- 最后可以设置显示网格,需要legend来显示图例和show显示,最后save_fig保存图片
# 显示网格
plt.grid(True, linestyl='-', alpha=0.5)
# 显示图例
plt.legend(property=my_font, loc='best')
# 显示图形
plt.show()
# 保存图形
plt.savefig('./picture.png')
总结
总结以上方法:
- 首先需要设置底层图片plt.figure(),传入图片大小和清晰度 ;
- 准备x和y轴数据;
- 开始进行绘图plt.plot()这里可以是bar、barh、hist、pie、scatter等,这里可以设置图线颜色color、图线宽度width、图线央视linestyle、图线透明度alpha以及图例lable;
- 设置x轴或者y轴刻度或者字符串显示,刻度显示可以进行切片处理,字符串显示可以运用 xticks把数字和字符串对应
- 显示中文需要特殊配置,导入matplotlib模块的font_manager模块中,设置FontProperties中的fname属性,给其传递自身电脑中的中文文字路径。在后续的需要显示中文的地方设置font_porperties或者font_manager属性。
- 设置x、y和title标签,这里直接用x_label、y_label和title可以直接设置,其中可以设置文字大小、文字类型和颜色等属性。
- 最后如果想要显示网格,可以运用grid方法改为Ture,设置网格线样式及清晰度等。注意,图例等需要设置legend来最后应用显示出来,路径的显示位置可以通过loc属性更改,自带的best会最完美的显示图例。运用show方法直接显示图形,运用savefig方法可以最后保存图片,当然,需要传入路径,一般保存的是png格式文件。
|