我有三列数据,第一列数据是横坐标,第二列数据是左纵坐标,第三列数据是右纵坐标,我要画双坐标线性图
时间: 2024-02-18 08:02:44 浏览: 109
data_matlab_数据坐标提取_图片提取数据_
5星 · 资源好评率100%
好的,以下是一个使用 Python 的 Matplotlib 库绘制双坐标线性图的示例代码:
```python
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.exp(x)
# 创建画布和子图
fig, ax1 = plt.subplots()
# 绘制第一个线性图
ax1.plot(x, y1, 'b-', label='y1')
ax1.set_xlabel('x')
ax1.set_ylabel('y1', color='b')
ax1.tick_params('y', colors='b')
# 创建第二个坐标轴
ax2 = ax1.twinx()
# 绘制第二个线性图
ax2.plot(x, y2, 'r-', label='y2')
ax2.set_ylabel('y2', color='r')
ax2.tick_params('y', colors='r')
# 设置图例
lines, labels = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax2.legend(lines + lines2, labels + labels2, loc=0)
# 设置标题
ax1.set_title('双坐标线性图')
plt.show()
```
在这个示例代码中,我们使用了 `np.linspace` 生成了 0 到 10 之间的 100 个均匀分布的数据点,并将其作为 x 坐标轴上的数据。然后,我们使用 `np.sin` 和 `np.exp` 函数分别计算了每个 x 坐标轴上对应的 y1 和 y2 坐标轴上的数据。接下来,我们使用 `ax1.plot` 和 `ax2.plot` 分别绘制了两个线性图,并将其中一个绑定到 `ax2` 变量上,以创建第二个坐标轴。最后,我们使用 `ax1.get_legend_handles_labels` 和 `ax2.get_legend_handles_labels` 分别获取两个子图的图例,然后使用 `ax2.legend` 将它们合并到一起。我们还使用了 `ax1.set_title` 设置了图表标题。
运行上述代码,你将会得到一个双坐标线性图,其中左纵坐标表示 y1 数据列,右纵坐标表示 y2 数据列。你可以根据需要调整数据和参数,来绘制不同形式的双坐标线性图。
阅读全文