折线图:
折线图(line chart)是我们在数据分析、数据展示中经常使用的一种图表,它可以直观的反映数据的变化趋势。与绘制柱状图、饼状图等图形不同,Matplotlib 并没有直接提供绘制折线图的函数。线图适用于分析数据随时间变化的趋势。例如,分析商品销量随时间的变化,预测未来的销售情况。 通过matplotlib.pyplot.plot函数来绘制折线图,plot函数不仅可以绘制折线,还可以绘制其他类型的图表。
plot函数
- 函数定义:
matplotlib.pyplot.plot(*args, scalex=True, scaley=True, data=None, **kwargs)
- 常用参数:
- args:
多个X、Y对可选的数据集 - scalex:
- scaley:
这两个参数确定视图限制是否与数据限制相适应,最终这些值传递给 autoscale_view,以便岁绘制的图表进行自动的缩放。 - data:
可索引对象,可选。带有标签数据的对象。如果给定,请提供要打印的标签名称 x 和 y - kwargs:
关键字参数 用于指定线条标签(用于自动图例)、线条宽度、抗锯齿、标记面颜色等属性
plot的详细定义: https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.plot.html
示例说明:
通过小龙虾和生蚝的全年价格的波动进行一个说明:
import matplotlib.pyplot as plt
import matplotlib
mouth = [1,2,3,4,5,6,7,8,9,10,11,12]
price = [10,13,50,40,70,60,14,12,25,25,20,10]
"""
font:设置中文
"""
matplotlib.rcParams['font.family'] = ['Heiti TC']
plt.plot(mouth,price,label='小龙虾价格')
plt.xlabel('月份')
plt.ylabel('价格')
plt.title('小龙虾全年价格')
plt.legend()
plt.show()
运行结果:
扩展应用
1、 线条风格
线条颜色
- 颜色名称或简写
- ‘b’ blue(蓝色)
- ‘g’ green(绿色)
- ‘r’ red(红色)
- ‘c’ cyan(青色)
- ‘m’ magenta(品红)
- ‘y’ yellow(黄色)
- ‘k’ black(黑色)
- ‘w’ white(白色)
-
rgb (r, g, b) 或 (r, g, b, a),其中 r g b a 取均为[0, 1]之间 -
[0, 1]之间的浮点数的字符串形式,表示灰度值。0表示黑色,1表示白色
关于颜色后面会写一篇文章专门介绍一下matplotlib中颜色的各种使用。
plot 方法的关键字参数 color(或c) 用来设置线的颜色
import matplotlib.pyplot as plt
import matplotlib
mouth = [1,2,3,4,5,6,7,8,9,10,11,12]
price = [10,13,50,40,70,60,14,12,25,25,20,10]
"""
font:设置中文
"""
matplotlib.rcParams['font.family'] = ['Heiti TC']
plt.plot(mouth,price,label='小龙虾价格',c='Red')
plt.xlabel('月份')
plt.ylabel('价格')
plt.title('小龙虾全年价格')
plt.legend()
plt.show()
运行结果如下:
线条样式
plot 方法的关键字参数 linestyle(或ls) 用来设置线的样式。可取值为:
- ‘-’, ‘solid’
- ‘–’, ‘dashed’
- ‘-.’, ‘dashdot’
- ‘:’, ‘dotted’
- ‘’, ’ ', ‘None’
import matplotlib.pyplot as plt
import matplotlib
mouth = [1,2,3,4,5,6,7,8,9,10,11,12]
price = [10,13,50,40,70,60,14,12,25,25,20,10]
"""
font:设置中文
"""
matplotlib.rcParams['font.family'] = ['Heiti TC']
plt.plot(mouth,price,label='小龙虾价格',ls="--",c='Red')
plt.xlabel('月份')
plt.ylabel('价格')
plt.title('小龙虾全年价格')
plt.legend()
plt.show()
运行结果如下:
线条粗细
设置 plot 方法的关键字参数 linewidth(或lw) 可以改变线的粗细,其值为浮点数。
import matplotlib.pyplot as plt
import matplotlib
mouth = [1,2,3,4,5,6,7,8,9,10,11,12]
price = [10,13,50,40,70,60,14,12,25,25,20,10]
"""
font:设置中文
"""
matplotlib.rcParams['font.family'] = ['Heiti TC']
plt.plot(mouth,price,label='小龙虾价格',lw=5.0,ls="--",c='Red')
plt.xlabel('月份')
plt.ylabel('价格')
plt.title('小龙虾全年价格')
plt.legend()
plt.show()
运行结果如下:
2、数据点标记marker
以下关键字参数可以用来设置marker的样式:
- marker 标记类型
- markeredgecolor 或 mec 标记边界颜色
- markeredgewidth 或 mew 标记宽度
- markerfacecolor 或 mfc 标记填充色
- markersize 或 ms 标记大小
其中marker的取值如下:
- ‘-’ 实线
- ‘–’ 虚线
- ‘-.’ 点与线
- ‘:’ 点
- ‘.’ 点标记
- ‘,’ 像素标记
- ‘o’ 圆圈标记
- ‘v’ 倒三角标记
- ‘^’ 正三角标记
- ‘<’ 左三角标记
- ‘>’ 右三角标记
- ‘1’ 向下Y标记
- ‘2’ 向上Y标记
- ‘3’ 向左Y标记
- ‘4’ 向右Y标记
- ‘s’ 正方形标记
- ‘p’ 五角星标记
- ‘*’ *标记
- ‘h’ 六边形1 标记
- ‘H’ 六边形2 标记
- ‘+’ +标记
- ‘x’ x标记
- ‘D’ 钻石标记
- ‘d’ 薄砖石标记
- ‘|’ 垂直线标记
- ‘_’ 水平线标记
import matplotlib.pyplot as plt
import matplotlib
mouth = [1,2,3,4,5,6,7,8,9,10,11,12]
price = [10,13,50,40,70,60,14,12,25,25,20,10]
"""
font:设置中文
"""
matplotlib.rcParams['font.family'] = ['Heiti TC']
plt.plot(mouth,price,label='小龙虾价格',marker='.',mfc='orange',ms=20,mec='c',lw=1.0,ls="--",c='Red')
plt.xlabel('月份')
plt.ylabel('价格')
plt.title('小龙虾全年价格')
plt.legend()
plt.show()
运行结果如下:
2、多组数据
完成了如何绘制单条折线的绘制,绘制多条折线也是很容易,只要准备好绘制多条折线图的数据即可
宵夜组合中加入生蚝
import matplotlib.pyplot as plt
import matplotlib
mouth = [1,2,3,4,5,6,7,8,9,10,11,12]
crawfishPrice = [10,13,50,40,70,60,14,12,25,25,20,10]
oystersPrice = [10,20,30,35,28,23,14,18,20,24,30,40]
"""
font:设置中文
"""
matplotlib.rcParams['font.family'] = ['Heiti TC']
plt.plot(mouth,crawfishPrice,label='小龙虾价格',marker='x',mfc='orange',ms=5,mec='c',lw=1.0,ls="--",c='Red')
plt.plot(mouth,oystersPrice,label='生蚝价格',marker='o',mfc='orange',ms=5,mec='c',lw=1.0,ls="-",c='green')
plt.xlabel('月份')
plt.ylabel('价格')
plt.title('小龙虾和生蚝全年价格')
plt.legend()
plt.show()
运行结果如下:
总结:
折线图一般在数据分析中使用的场景
- 可以显示随时间(根据常用比例设置)而变化的连续数据,因此非常适用于显示在相等时间间隔下数据的趋势。
- 在折线图中,可以得出数据随时间变化的结论,例如数据随时间递增、数据随时间递减、数据是否呈现周期性变化、数据称指数性增长等,也可以进行多条折线图的对比。
|