兄弟们,Python啥也不会,如何画出一张最基本的图?相较其他文章,本文特色是体系化,搞清楚画图的来龙去脉,一文掌握画图的核心三板斧及高频操作。
入门阶段
天才第一步,首先应该问下:绘图的基本骨架是什么?
我认为,核心主要有:图幅、横纵坐标、曲线类型 (曲线、散点、柱状)。
好开干,先导入对应的工具包:matplotlib
import matplotlib.pyplot as plt
import numpy as np
其次,准备好相关的横纵坐标数据x, y 。
图源:ref1
那么如何用Python代码去实现对应功能呢?
基本流程:
对应函数:
plt.figure(num)
- 创建画板num,若无入参,则默认为1
- 返回对应画板句柄
plt.plot(x, y, format_string, **kwargs)
- x:x轴数据,列表或数组,可选
- y:y轴数据,列表或数组
- format_string:控制曲线的格式字符串,可选
- **kwargs:第二组或更多,(x,y,format_string)
- 注:当绘制多条曲线时,各条曲线的x不能省略
plt.show()
花式阶段
更进一步,过了雪中送炭阶段,来点锦上添花的东西。
花式操作:
- 曲线控制:颜色、粗细、实虚
- 图例、标题、横纵轴标签
- 网格线、坐标轴刻度范围
- 图片保存、关闭
对应函数:
- xlabel(‘xx’),横轴标签名
- ylabel(‘yy’),纵轴标签名
- title(‘title’),图标题
- legend(‘曲线说明’),添加图例说明不同曲线
- axis([xmin, xmax, ymin, ymax]) ,同时控制xy轴的范围
- xlim([xmin, xmax]),单独控制x轴的范围
- ylim([ymin, ymax]),单独控制y轴的范围
- grid(),显示网格线
- savefig(‘path with filename’),保存当前figure画板中的图
- close(fig1),关闭画板,通过figure()函数返回的句柄
实战DEMO
import matplotlib.pyplot as plt
import numpy as np
import math as mt
def data_generation(max_val, band_num):
freq = range(max_val)
max_val_lg = mt.log10(max_val)
band_interval = max_val_lg / band_num
bands = []
for i in range(band_num):
tmp = mt.pow(10, i * band_interval) - 1
val = int(tmp)
if val < i:
val = i
bands.append(val)
return bands
def plot_basic(x, y):
plt.figure(1)
plt.plot(x, y)
plt.show()
def plot_advance(x, y0, y1):
fig2 = plt.figure(2)
l1 = plt.plot(x, y0, color='r',marker='o', linestyle='dashed', label='Me')
l2 = plt.plot(x, y1, color='k',marker='.', linestyle='--', label='You')
plt.xlabel('time/day')
plt.ylabel('salary/dollar')
plt.title('The change of salary')
plt.legend()
plt.xlim(-1, 33)
plt.ylim(-1, 280)
plt.grid(linestyle='--')
plt.show()
fig2.savefig('./salary.jpg')
if __name__ == "__main__":
y0 = range(30)
y1 = data_generation(480, 30)
x = range(30)
print('start processing...')
plot_basic(x, y1)
plot_advance(x, y0, y1)
print('done!')
效果图如下:
更多进阶用法见参考链接,里面涉及如一个画板中绘制多幅子图的方法。
如果小伙伴觉得本文有帮助,欢迎评论留言 哦,下一篇总结分享gif动图制作 。
参考链接
- python如何使用Matplotlib画图(基础篇),link
- python常用数据作图–matplotlib用法(相关设置及常用图),link
- Plot不同字符串组合控制粗细、大小颜色等,link
|