matplotlib同时显示三条曲线
时间: 2024-10-11 21:10:33 浏览: 11
在Python的数据可视化库matplotlib中,如果你想要在同一张图表上同时显示三条曲线,你可以使用`plot()`函数多次绘制,并设置不同的线型、颜色或标记。下面是一个简单的示例:
```python
import matplotlib.pyplot as plt
# 假设你有三个数据序列x1, y1, x2, y2, x3, y3
x1 = [1, 2, 3, 4]
y1 = [1, 4, 9, 16]
x2 = [0, 1, 2, 3]
y2 = [0, 1, 4, 9]
x3 = [5, 6, 7, 8]
y3 = [25, 36, 49, 64]
plt.figure() # 创建一个新的图形窗口
plt.plot(x1, y1, label='曲线一', color='blue') # 第一条线,蓝色
plt.plot(x2, y2, label='曲线二', linestyle='--', color='red') # 第二条线,红色虚线
plt.plot(x3, y3, 'g.', markersize=10) # 第三条线,绿色点状
plt.title('同时显示三条曲线') # 图表标题
plt.xlabel('X轴标签') # X轴标签
plt.ylabel('Y轴标签') # Y轴标签
plt.legend() # 显示图例,标识出每条线的含义
plt.show() # 显示绘图结果
相关问题
利用python中matplotlib创建三条简单曲线
可以使用以下代码创建三条简单曲线:
```python
import matplotlib.pyplot as plt
import numpy as np
# 生成x轴数据
x = np.linspace(0, 10, 100)
# 生成三条y轴数据
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
# 绘制曲线
plt.plot(x, y1, label='sin(x)')
plt.plot(x, y2, label='cos(x)')
plt.plot(x, y3, label='tan(x)')
# 添加图例
plt.legend()
# 显示图形
plt.show()
```
运行后会弹出一个窗口,显示三条曲线。其中,`np.linspace(0, 10, 100)` 生成了一个包含100个元素的数组,表示x轴的数据范围为0到10。接着,使用 `np.sin(x)`、`np.cos(x)`、`np.tan(x)` 分别生成了三条曲线的y轴数据。最后,使用 `plt.plot()` 绘制曲线,并使用 `plt.legend()` 添加图例,最后使用 `plt.show()` 显示图形。
我想用pyqt5和matplotlib创建一个图形,图形上有三条曲线,这三条曲线对应这两个y轴,第一、二条曲线对应同一个y轴,这两个y轴的数值都不一样,分别在图形的左右两边,这三条曲线都是对应的同一个x轴,这三条曲线,第1、2条是描述电压的最大值和最小值,第三条是描述电流值,他们是随着时间变化的,所以他们的x轴都是一致的,我每隔一秒调用一次图形函数,往里面传入最大电压、最小电压、电流值,和时间值。然后他们在图形上形成曲线
好的,这是一个比较复杂的需求,但是我们可以一步一步来实现。首先需要安装`pyqt5`和`matplotlib`模块。可以使用以下命令进行安装:
```
pip install pyqt5
pip install matplotlib
```
接下来可以使用以下代码来实现你的需求:
```python
import sys
import random
import matplotlib.pyplot as plt
from PyQt5.QtWidgets import QApplication, QMainWindow, QSizePolicy
from PyQt5.QtCore import QTimer
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 设置窗口标题和大小
self.setWindowTitle("多曲线图")
self.setGeometry(100, 100, 800, 500)
# 创建图形对象
self.fig = Figure(figsize=(5, 4), dpi=100)
# 添加一张子图
self.ax1 = self.fig.add_subplot(111)
# 添加第二个y轴
self.ax2 = self.ax1.twinx()
# 设置图形标题和轴标签
self.ax1.set_title("电压/电流图")
self.ax1.set_xlabel("时间")
self.ax1.set_ylabel("电压")
self.ax2.set_ylabel("电流")
# 设置曲线的颜色和标签
self.line1, = self.ax1.plot([], [], color='red', label="最大电压")
self.line2, = self.ax1.plot([], [], color='blue', label="最小电压")
self.line3, = self.ax2.plot([], [], color='green', label="电流")
# 添加图例
self.ax1.legend(loc="upper left")
self.ax2.legend(loc="upper right")
# 创建画布并将图形对象添加到画布上
self.canvas = FigureCanvas(self.fig)
self.canvas.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
self.setCentralWidget(self.canvas)
# 创建定时器
self.timer = QTimer(self)
self.timer.timeout.connect(self.plot_data)
self.timer.start(1000) # 每隔1秒刷新一次
def plot_data(self):
# 生成随机数据
x = [i for i in range(10)]
y1 = [random.randint(0, 10) for _ in range(10)]
y2 = [random.randint(0, 10) for _ in range(10)]
y3 = [random.randint(0, 10) for _ in range(10)]
# 更新曲线数据
self.line1.set_data(x, y1)
self.line2.set_data(x, y2)
self.line3.set_data(x, y3)
# 重新计算曲线的界限
self.ax1.relim()
self.ax1.autoscale_view()
self.ax2.relim()
self.ax2.autoscale_view()
# 刷新画布
self.canvas.draw()
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
这个程序会创建一个窗口,窗口中包含一个图形,图形上有三条曲线,两条曲线对应左边的y轴,一条曲线对应右边的y轴。每隔1秒钟,程序会生成一组随机数据,然后更新曲线的数据,并且重新计算曲线的界限,最后刷新画布。
你可以根据你的需求修改程序中的数据更新函数,将随机数据替换成你的数据即可。
阅读全文