Python matplotlib之折线图的各种样式与画法总结
1. 简介
matplotlib 是 Python 语言下的一个绘图库,它提供了一种类似 MATLAB 的绘图方式。matplotlib 不仅能够简单方便地生成各种折线图,而且还支持很多自定义样式和参数设置。
本文将围绕 matplotlib 绘制折线图进行详细的讲解,包括:
- 如何安装 matplotlib
- 如何进行基本绘图操作
- 折线图的各种样式及代码示范
- 折线图的数据处理及示例分析
2. 安装 matplotlib
使用 pip 命令可以简单方便地安装 matplotlib 库。
pip install matplotlib
常见问题:
如果报错信息显示 matplotlib 找不到系统依赖的包 libfreetype.6.dylib,解决方式如下:
- brew install freetype
- pip install --no-cache-dir -I --ignore-installed matplotlib
3. 基本绘图操作
绘制一个简单的线性折线图,需要几个简单的步骤:
- 生成数据
- 创建画布和坐标系
- 将数据放置在坐标系上并设置样式
- 设置坐标轴信息等图形参数
- 显示图形
下面是一个简单示例代码:
import matplotlib.pyplot as plt
# 生成数据
x = [1, 2, 3, 4, 5, 6]
y = [2, 3, 5, 8, 11, 14]
# 创建画布和坐标系
fig, ax = plt.subplots()
# 添加数据到坐标系上并设置样式
ax.plot(x, y, color='red', linewidth=2, linestyle='--', label='Line Name')
# 设置坐标轴信息等图形参数
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_title('Title')
ax.grid(True)
ax.legend(loc='best')
# 显示图形
plt.show()
可以看到,我们调用了 plot 方法将数据放置在坐标系上,该方法支持很多样式的设置,比如 color
、linewidth
、linestyle
等。同时,我们还通过更改坐标轴标签、标题、网格和图例等内容,让图形看起来更加美观易懂。
4. 折线图的各种样式及代码示范
在本节中,我们将针对折线图的多种样式进行详细的介绍,具体包括以下内容:
- 线性折线图
- 曲线折线图
- 填充面积折线图
- 点状折线图
- 标记文本折线图
- 带误差线折线图
- 双轴折线图
4.1 线性折线图
线性折线图是最为常见的折线图类型。在 matplotlib 中,可以通过 plot
函数快速绘制出这种类型的折线图。
import matplotlib.pyplot as plt
# 生成数据
x = [1, 2, 3, 4, 5, 6]
y = [2, 3, 5, 8, 11, 14]
# 创建画布和坐标系
fig, ax = plt.subplots()
# 添加数据到坐标系上并设置样式
ax.plot(x, y, color='red', linewidth=2, linestyle='--')
# 显示图形
plt.show()
4.2 曲线折线图
除了线性折线图外,还有一类叫做曲线折线图的图形。它们可以通过将坐标系切换为极坐标系后再进行绘制。
import numpy as np
import matplotlib.pyplot as plt
# 生成数据
theta = np.linspace(0, 2*np.pi, 100)
r = np.sin(3*theta)
# 创建画布和坐标系
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
# 添加数据到坐标系上并设置样式
ax.plot(theta, r, color='blue')
# 显示图形
plt.show()
4.3 填充面积折线图
在 matplotlib 中,我们还可以通过 fill_between
函数绘制填充面积折线图。
import matplotlib.pyplot as plt
# 生成数据
x = [1, 2, 3, 4, 5, 6]
y = [2, 3, 5, 8, 11, 14]
# 创建画布和坐标系
fig, ax = plt.subplots()
# 添加数据到坐标系上并设置样式
ax.fill_between(x, y, color='g', alpha=0.3)
ax.plot(x, y, color='g', linewidth=2, linestyle='--')
# 显示图形
plt.show()
4.4 点状折线图
在 matplotlib 中,我们可以通过 scatter
函数快速绘制出点状折线图。
import matplotlib.pyplot as plt
# 生成数据
x = [1, 2, 3, 4, 5, 6]
y = [2, 3, 5, 8, 11, 14]
# 创建画布和坐标系
fig, ax = plt.subplots()
# 添加数据到坐标系上并设置样式
ax.scatter(x, y, color='red', marker='o')
# 显示图形
plt.show()
4.5 标记文本折线图
标记文本折线图可以通过 annotate
函数实现。它可以在坐标系上添加文本标注和箭头标记等元素。
import matplotlib.pyplot as plt
# 生成数据
x = [1, 2, 3, 4, 5, 6]
y = [2, 3, 5, 8, 11, 14]
# 创建画布和坐标系
fig, ax = plt.subplots()
# 添加数据到坐标系上并设置样式
ax.plot(x, y, color='blue')
ax.annotate('Start Here', xy=(x[0], y[0]), xytext=(2, 8), fontsize=10,
arrowprops=dict(facecolor='yellow', arrowstyle='->'))
# 显示图形
plt.show()
4.6 带误差线折线图
在 matplotlib 中,我们可以使用 errorbar
函数添加误差线。
import matplotlib.pyplot as plt
# 生成数据
x = [1, 2, 3, 4, 5, 6]
y = [2, 3, 5, 8, 11, 14]
y_error = [0.3, 0.4, 0.2, 0.6, 0.8, 0.5]
# 创建画布和坐标系
fig, ax = plt.subplots()
# 添加数据到坐标系上并设置样式
ax.errorbar(x, y, yerr=y_error, fmt='-o', capsize=3)
# 显示图形
plt.show()
4.7 双轴折线图
双轴折线图是一种非常实用的图表类型,它可以在同一个图表中绘制两个不同的数据集,每个数据集具有自己的轴。在 matplotlib 中,我们可以通过 twinx
函数实现双轴折线图。
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# 创建画布和坐标系
fig, ax1 = plt.subplots()
# 添加数据到坐标系上并设置样式
ax1.plot(x, y1, color='blue')
ax1.set_xlabel('X axis')
ax1.set_ylabel('Y1', color='blue')
ax1.tick_params(axis='y', labelcolor='blue')
ax2 = ax1.twinx()
ax2.plot(x, y2, color='red')
ax2.set_ylabel('Y2', color='red')
ax2.tick_params(axis='y', labelcolor='red')
# 显示图形
plt.show()
5. 折线图的数据处理与示例分析
在本节中,我们将介绍如何通过实际案例进行折线图的数据处理及分析。
数据源:https://data.giss.nasa.gov/gistemp/
该数据集记录了全球降水、温度和气候变化情况,本文选择其中的温度数据进行折线图分析。
5.1 数据分析
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据集
df_climate = pd.read_csv('GLB.Ts_dSST.csv', skiprows=2)
# 数据处理
# 取最近一年的数据
current_year = df_climate['Year'].max()
df_climate = df_climate[df_climate['Year'] == current_year]
# 提取数据中的月份温度信息
cols = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
df_climate = df_climate[cols].T.reset_index()
df_climate.columns = ['Month', 'Temp']
# 去掉没有数据的月份
df_climate = df_climate.dropna()
# 绘制折线图
fig, ax = plt.subplots()
ax.plot(df_climate['Month'], df_climate['Temp'])
ax.set_xticklabels(cols)
ax.set_xlabel('Month')
ax.set_ylabel('Temperature Anomaly (°C)')
ax.set_title(f'Global Temperature Anomalies in {current_year}')
ax.grid(True)
# 显示图形
plt.show()
如上方法(数据源在上文中附上),我们将温度数据读取到 DataFrame 中,并处理得到最近一年(2019)的各月份温度数据。最后,我们通过 plot
函数绘制折线图,可以很清晰地看到全球的温度变化情况。
5.2 结论
通过以上的温度数据的折线图,我们可以看到全球温度变化的趋势向上,特别是近年来变化幅度加大。因此,对于温室效应和全球气候变化的问题,我们应该引起高度重视和实际行动,尽可能地减少对环境的压力。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python matplotlib之折线图的各种样式与画法总结 - Python技术站