python实时绘制多条动态曲线
时间: 2023-05-14 15:07:20 浏览: 146
可以使用Matplotlib库实现实时绘制多条动态曲线。具体实现方法可以参考以下代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 创建画布和子图
fig, ax = plt.subplots()
# 设置x轴范围和初始数据
x = np.arange(0, 2*np.pi, 0.01)
y1 = np.sin(x)
y2 = np.cos(x)
# 绘制初始曲线
line1, = ax.plot(x, y1, 'r-', label='sin')
line2, = ax.plot(x, y2, 'b-', label='cos')
ax.legend()
# 更新曲线数据
def update(i):
y1 = np.sin(x + i/10.0)
y2 = np.cos(x + i/10.0)
line1.set_ydata(y1)
line2.set_ydata(y2)
return line1, line2
# 动态绘制曲线
ani = FuncAnimation(fig, update, frames=100, interval=50, blit=True)
# 显示动画
plt.show()
```
这段代码可以实时绘制两条动态曲线,其中`update`函数用于更新曲线数据,`FuncAnimation`函数用于动态绘制曲线。你可以根据需要修改代码以实现绘制多条动态曲线。
相关问题
python实时绘制多条动态曲线时,x轴范围无限增加
可以使用matplotlib.animation模块实现实时绘制多条动态曲线,同时设置x轴范围为固定值,比如设置x轴范围为0到100,当x轴范围超过100时,将最左侧的数据点删除,保持x轴范围不变。以下是一个简单的示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
fig, ax = plt.subplots()
# 设置x轴范围为0到100
ax.set_xlim(0, 100)
# 初始化多条曲线
lines = []
for i in range(5):
line, = ax.plot([], [])
lines.append(line)
# 初始化数据
data = []
for i in range(5):
data.append(np.random.rand(100))
# 更新函数,每次更新数据并重新绘制曲线
def update(frame):
for i in range(5):
# 添加新数据点
data[i] = np.append(data[i], np.random.rand())
# 删除最左侧的数据点
data[i] = data[i][-100:]
# 更新曲线数据
lines[i].set_data(np.arange(len(data[i])), data[i])
return lines
# 动画对象
ani = animation.FuncAnimation(fig, update, frames=100, blit=True)
plt.show()
```
这段代码可以实时绘制5条动态曲线,x轴范围为0到100,每次添加一个新数据点并删除最左侧的数据点,保持x轴范围不变。
python绘制多条pr曲线的代码
Python绘制多条PR曲线的代码可以使用matplotlib库实现。下面是一个示例代码:
```python
import matplotlib.pyplot as plt
import numpy as np
# 定义不同类别的真实标签和预测得分
labels = [np.array([1, 0, 1, 1, 0]), np.array([1, 1, 0, 0, 1])]
scores = [np.array([0.8, 0.6, 0.4, 0.3, 0.2]), np.array([0.9, 0.7, 0.5, 0.4, 0.1])]
# 计算每个类别的PR曲线数据
precision = []
recall = []
for i in range(len(labels)):
# 根据预测得分排序
sorted_indices = np.argsort(-scores[i])
sorted_labels = labels[i][sorted_indices]
# 计算累积真正例和累积正例的个数
cum_true_positive = np.cumsum(sorted_labels)
cum_positive = np.arange(1, len(sorted_labels) + 1)
# 计算精确率和召回率
prec = cum_true_positive / cum_positive
rec = cum_true_positive / np.sum(sorted_labels)
# 添加到列表中
precision.append(prec.tolist())
recall.append(rec.tolist())
# 绘制PR曲线
for i in range(len(labels)):
plt.plot(recall[i], precision[i], label='PR Curve {}'.format(i+1))
# 添加标题和图例
plt.title('PR Curves')
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.legend(loc='lower left')
# 显示图形
plt.show()
```
这段代码中,我们定义了两个类别的真实标签和预测得分,并根据它们计算了每个类别的PR曲线数据。然后使用matplotlib库中的plot函数绘制了这些PR曲线,并添加了标题和图例。最后使用show函数展示了图形。