Python自定义实现数据可视化功能
程序员文章站
2024-01-19 12:37:28
...
Python自定义实现数据可视化功能
在Python中,无论是画哪种图,当画多张图时,需要一遍一遍的复制黏贴以前的画图流程程序,在这里,我设计一个可以自动绘制散点图的类
# 自动绘图类
class Auto_plot:
def __init__(self, value, name, unit):
self.value = value
self.unit = unit
self.name = name
self.sketch()
# 自动设计横纵坐标刻度及范围
def sketch(self):
# 确定画布大小
fig = plt.figure(figsize=(24, 6))
# 找到数据里的最小和最大值,设计纵坐标
min_a = min(self.value)
max_a = max(self.value)
# 调整坐标轴范围
if min_a < 0:
min_a = min(self.value) + 0.25 * min(self.value)
else:
min_a = min(self.value) - 0.25 * min(self.value)
if max_a < 0:
max_a = max(self.value) - 0.25 * max(self.value)
else:
max_a = max(self.value) + 0.25 * max(self.value)
# 设计一个与纵坐标维度相同的数组作为横坐标
# 数据的个数,设计横坐标
s = len(self.value)
x = np.arange(0, s, 1)
# 把x轴的刻度间隔设置为10000,并存在变量里
x_major_locator = MultipleLocator(10000)
# y轴的刻度是变化的,设计y轴的刻度变化
k = (max(self.value) - min(self.value)) / 4.0
y_major_locator = MultipleLocator(k)
# ax为两条坐标轴的实例,获得这个子图
ax = plt.gca()
# 把x轴的主刻度设置为10000的倍数
ax.xaxis.set_major_locator(x_major_locator)
ax.yaxis.set_major_locator(y_major_locator)
# 设置x轴的刻度范围
plt.xlim(0, s + 1000)
plt.ylim(min_a, max_a)
# 绘制散点图
# 解决负数显示问题
matplotlib.rcParams['axes.unicode_minus'] = False
plt.scatter(x, self.value, s=3, c="blue", alpha=1)
# 给散点图加横纵坐标标签及标题
s = inpath[31:52]
plt.title(s + '/' + self.name + ' and Time')
plt.xlabel('Time/s')
plt.ylabel(self.name + '/' + self.unit)
plt.show()
Auto_plot(TAT, 'TAT', 'deg C')