在Python的Matplotlib中向散点图添加线条
参考: Adding a line to a scatter plot using Pythons Matplotlib
在数据可视化的过程中,散点图是用来展示两个变量之间关系的常用图表类型。有时,为了更直观地展示变量间的趋势或关系,我们可能需要在散点图上添加一条或多条线。本文将详细介绍如何使用Python的Matplotlib库来实现这一功能。我们将通过多个示例代码来展示不同情况下如何向散点图中添加线条。
基础散点图与线条添加
首先,我们从最基本的散点图开始,然后逐步添加线条来展示数据的趋势。
示例1:创建基础散点图
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.random.rand(50)
y = np.random.rand(50)
# 创建散点图
plt.scatter(x, y)
plt.title("基础散点图 - how2matplotlib.com")
plt.xlabel("X轴")
plt.ylabel("Y轴")
plt.show()
Output:
示例2:在散点图上添加一条简单的直线
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 1, 50)
y = np.random.rand(50)
# 创建散点图
plt.scatter(x, y)
plt.title("散点图与直线 - how2matplotlib.com")
plt.xlabel("X轴")
plt.ylabel("Y轴")
# 添加一条直线
plt.plot([0, 1], [0, 1], 'r') # 红色直线
plt.show()
Output:
示例3:添加拟合线
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.random.rand(50)
y = 2 * x + np.random.normal(0, 0.1, 50) # 添加一些噪声
# 创建散点图
plt.scatter(x, y)
plt.title("散点图与拟合线 - how2matplotlib.com")
plt.xlabel("X轴")
plt.ylabel("Y轴")
# 拟合线
z = np.polyfit(x, y, 1)
p = np.poly1d(z)
plt.plot(x, p(x), "g--") # 绿色虚线
plt.show()
Output:
示例4:多条趋势线
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.random.rand(100)
y = 3 * x + np.random.normal(0, 0.2, 100)
# 创建散点图
plt.scatter(x, y)
plt.title("散点图与多条趋势线 - how2matplotlib.com")
plt.xlabel("X轴")
plt.ylabel("Y轴")
# 添加多条趋势线
z1 = np.polyfit(x, y, 1)
p1 = np.poly1d(z1)
plt.plot(x, p1(x), "r-") # 红色实线
z2 = np.polyfit(x, y, 2)
p2 = np.poly1d(z2)
plt.plot(x, p2(x), "b--") # 蓝色虚线
plt.show()
Output:
示例5:动态添加线条
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x)
# 创建散点图
plt.scatter(x, y)
plt.title("动态添加线条 - how2matplotlib.com")
plt.xlabel("X轴")
plt.ylabel("Y轴")
# 动态添加线条
for i in range(1, 10):
plt.plot(x, np.sin(x + i * 0.5), label=f'Line {i}')
plt.legend()
plt.show()
Output:
高级应用
在掌握了基础的线条添加技巧后,我们可以探索更多高级的应用,如动态改变线条的样式、颜色等。
示例6:改变线条样式和颜色
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 10, 100)
y = np.cos(x)
# 创建散点图
plt.scatter(x, y)
plt.title("改变线条样式和颜色 - how2matplotlib.com")
plt.xlabel("X轴")
plt.ylabel("Y轴")
# 添加线条
plt.plot(x, y, linestyle='--', color='magenta') # 点划线,洋红色
plt.show()
Output:
示例7:使用不同的标记
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 10, 50)
y = np.tan(x)
# 创建散点图
plt.scatter(x, y, marker='o') # 使用圆圈标记
plt.title("使用不同的标记 - how2matplotlib.com")
plt.xlabel("X轴")
plt.ylabel("Y轴")
# 添加线条
plt.plot(x, y, marker='x') # 使用X标记
plt.show()
Output:
示例8:线条和散点图使用不同颜色
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 10, 50)
y = np.exp(-x)
# 创建散点图
plt.scatter(x, y, color='blue') # 蓝色散点
plt.title("线条和散点图使用不同颜色 - how2matplotlib.com")
plt.xlabel("X轴")
plt.ylabel("Y轴")
# 添加线条
plt.plot(x, y, color='red') # 红色线条
plt.show()
Output:
示例9:添加带有误差棒的线条
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 10, 50)
y = np.log(x + 1)
yerr = 0.2 + 0.2 * np.sqrt(x)
# 创建散点图
plt.errorbar(x, y, yerr=yerr, fmt='o', color='black', ecolor='lightgray', elinewidth=3, capsize=0)
plt.title("添加带有误差棒的线条 - how2matplotlib.com")
plt.xlabel("X轴")
plt.ylabel("Y轴")
plt.show()
Output:
示例10:动态更新线条
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)
fig, ax = plt.subplots()
line, = ax.plot(x, y, color='k')
for phase in np.linspace(0, 10, 100):
line.set_ydata(np.sin(x + phase))
plt.title("动态更新线条 - how2matplotlib.com")
plt.draw()
plt.pause(0.1)
plt.show()
以上示例展示了在Matplotlib中向散点图添加线条的多种方法。通过这些示例,你可以学会如何在实际的数据可视化项目中有效地使用线条来增强图表的表达力。