提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
Python绘制折线图 。
一、Python案例-折线图
1、代码
代码如下:
# 导入模块
import numpy as np
import matplotlib.pyplot as plt
# 准备x,y轴的数据
x = np.arange(1, 9)
y1 = np.array([32, 33, 35, 37, 32, 34, 37, 39])
y2 = np.array([12, 13, 14, 13, 12, 14, 16, 18])
y_max = 39
y_min = 12
# 再取一条为平均值的折线
y_maen = (y_max + y_min)/2
# 2.绘制折线(其中label参数为命名显示图例,方便直接使用)
plt.plot(x, y_max, color='r', label='max', linewidth=3, linestyle='-')
# linewidth 参数表示折线的宽度
plt.plot(x, y_min, color='k', label='min', linewidth=7, linestyle=':')
# linestyle 参数表示折线的类型
plt.plot(x, y_maen, color='g', label='max', linewidth=5, linestyle='--')
plt.legend() # 显示图例
plt.show()
2、问题分析
File
“C:\Users\tang3\Desktop\pythonProject.venv\Lib\site-packages\matplotlib\axes_base.py”,
line 486, in _plot_args
raise ValueError(f"x and y must have same first dimension, but " ValueError: x and y must have same first dimension, but have shapes
(8,) and (1,)
这个问题是调用matplotlib做折线图的时候,输入的x和y的值有问题产生的,因为你画的图。xy的值必须在一个维度(或者说数量不一致),不然就违背了之前的平面图。当然这个错误也适用于其他的平面图的时候。
y_max = 39
y_min = 12
plt.plot(x, y_max, color='r', label='max', linewidth=3, linestyle='-')
2、问题改正
# 导入模块
import numpy as np
import matplotlib.pyplot as plt
# 准备x,y轴的数据
x = np.arange(1, 9)
y1 = np.array([32, 33, 35, 37, 32, 34, 37, 39])
y2 = np.array([12, 13, 14, 13, 12, 14, 16, 18])
# 再取一条为平均值的折线
y_maen = (y1 + y2)/2
# 2.绘制折线(其中label参数为命名显示图例,方便直接使用)
plt.plot(x, y1, color='r', label='max', linewidth=3, linestyle='-')
# linewidth 参数表示折线的宽度
plt.plot(x, y2, color='k', label='min', linewidth=7, linestyle=':')
# linestyle 参数表示折线的类型
plt.plot(x, y_maen, color='g', label='max', linewidth=5, linestyle='--')
plt.legend() # 显示图例
plt.show()
总结
调用matplotlib做折线图的时候,x的数量和y的数量是要一致的