( 图表 ) 折线图
这篇教学会使用 matplotlib pyplot 模组里的 plot() 方法,将数据绘制成二维折线图 ( Line Chart ),并进一步介绍 polt() 的相关用法。
本篇使用的 Python 版本为 3.7.12,所有范例可使用 Google Colab 实作,不用安装任何软件 ( 参考:使用 Google Colab )
import matplotlib
要进行本篇的范例,必须先加载 matplotlib 函数库的 pyplot 模组,范例将其独立命名为 plt。
import matplotlib.pyplot as plt
pyplot.plot() 参数说明
pyplot.plot() 常用的参数如下表所示 ( 完整参数参考:matplotlib.pyplot.plot ):
| 参数 | 说明 |
|---|---|
| x | 必填,第一组数据 ( x 轴 )。 |
| y | 第二组数据 ( y 轴 )。 |
| color | 线条或数据点的颜色 ( 除了十六进制色码,也可填入颜色代码,例如 r、g、b、m、c、y...等,参考:color 列表 )。 |
| marker | 数据点样式,默认无数据点 ( 数据点样式代码为 .、,、o、v...等,参考:markers 列表 )。 |
| linestyle | 线条样式,默认实线 solid ( 线条样式代码为 -、--、-.、: )。 |
| linewidth | 线条粗细,默认 2。 |
| markersize | 数据点大小,默认 6。 |
绘制第一张折线图
下方的程序码,会画出一条左下往右上的折线图,由于数据只有一组 x,会自动将 y 的数据套用 x。
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
# 畫出顏色紅色、圓形錨點、虛線、粗細 2、資料點大小 6 的線條
plt.plot(x,color='r', marker='o', lineStyle='--', linewidth=2, markersize=6)
plt.show()
上方的程序码,也可以将颜色、数据点形状和线条样式,简化成下方的长相,执行后也会得到同样的结果。
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
plt.plot(x,'ro--', linewidth=2, markersize=6) # 簡化後的程式碼
plt.show()
二维数据的折线图
如果同时有 x 和 y 二维数据,只要将数据放入 x 和 y 的参数字置,就能套用到对应的座标轴 ( 注意数据长度要相同,不然会发生错误 )
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [1,2,4,8,16]
plt.plot(x, y, 'ro--', linewidth=2, markersize=6)
plt.show()
多组数据的折线图
如果有多组数据需要同时呈现,plot 提供下列几种方法,第一种方法只依序将数据填入参数,就能在同一张图表上画出折线图。
import matplotlib.pyplot as plt
x = [[1,2,3,4,5],[1,2,3,4,5]]
y = [[1,2,4,8,16],[1,2,3,4,5]]
plt.plot(x[0], y[0], 'ro-', x[1], y[1], 'go--') # 依序填入資料
plt.show()
第二种方法是独立绘制每条线段,绘制完成后再使用 show() 的方式显示折线图。
import matplotlib.pyplot as plt
x = [[1,2,3,4,5],[1,2,3,4,5]]
y = [[1,2,4,8,16],[1,2,3,4,5]]
plt.plot(x[0], y[0], 'ro-') # 先畫第一條紅色實線
plt.plot(x[1], y[1], 'go--', linewidth=5, markersize=15) # 再畫第二條綠色粗的虛線
plt.show()
搭配 NumPy 绘制折线图
由于 matplotlib 能完美的和 NumPy 整合,所以能透过 NumPy 强大的处理或产生数据能力,快速产生许多绘图用的数据,下方的例子,使用 NumPy 产生 0~10 间连续 100 个数字,以及每个数字对应的 sin 和 cos 数值,最后使用 matplotlib 绘制出结果。
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 100) # 產生 0~10 間連續 100 個數字
y1 = np.sin(x) # 每個數字對應的 sin 值
y2 = np.cos(x) # 每個數字對應的 cos 值
plt.plot(x,y1) # 畫出第一條線段
plt.plot(x,y2) # 畫出第二條線段
plt.show()
微信扫码关注
抖音扫码关注