rx图里的曲线图如何添加图例
时间: 2024-03-20 20:45:28 浏览: 17
在Rx图中添加图例需要使用 `legend` 函数。该函数可以在曲线的右上方添加一个方框,并在其中显示曲线的标签。
下面是一个示例代码,演示了如何在Rx图中添加图例:
```python
import numpy as np
import matplotlib.pyplot as plt
import rx
import rx.operators as ops
# 生成一些数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# 创建Rx图对象,并添加两条曲线
fig = plt.figure()
ax = fig.add_subplot(111)
rx.Observable.from_([y1, y2]).subscribe(lambda y: ax.plot(x, y))
# 添加图例
ax.legend(['sin', 'cos'])
# 显示图形
plt.show()
```
在上面的代码中,我们首先创建了一个Rx图对象,并使用 `from_` 操作符添加了两条曲线。然后,我们使用 `legend` 函数在曲线的右上方添加了一个方框,并在其中显示了曲线的标签。最后,我们使用 `show` 函数显示了图形。
相关问题
如何给已有的rx图里的曲线图如何添加图例
给已有的Rx图中的曲线添加图例可以通过以下步骤实现:
1. 在原有的Rx图中获取曲线对象,例如使用 `ax.lines` 获取所有曲线对象的列表。
2. 在每个曲线对象上设置一个标签,例如使用 `set_label` 函数设置标签名称。
3. 调用 `legend` 函数添加图例。
下面是一个示例代码,演示了如何给已有的Rx图添加图例:
```python
import numpy as np
import matplotlib.pyplot as plt
import rx
import rx.operators as ops
# 生成一些数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# 创建Rx图对象,并添加两条曲线
fig = plt.figure()
ax = fig.add_subplot(111)
rx.Observable.from_([y1, y2]).subscribe(lambda y: ax.plot(x, y))
# 给每条曲线设置标签
ax.lines[0].set_label('sin')
ax.lines[1].set_label('cos')
# 添加图例
ax.legend()
# 显示图形
plt.show()
```
在上面的代码中,我们首先创建了一个Rx图对象,并使用 `from_` 操作符添加了两条曲线。然后,我们使用 `lines` 属性获取所有曲线对象的列表,并使用 `set_label` 函数为每个曲线对象设置标签名称。最后,我们调用 `legend` 函数添加图例。
绘制损失函数的曲线图
绘制损失函数曲线可以使用两种方法,一种是使用TensorBoard,另一种是使用matplotlib。
使用TensorBoard的方法如下:
首先,需要导入必要的库和函数:
```python
from torch.utils.tensorboard import SummaryWriter
import loadFromPickle
import drwaLossFunction
```
接下来,创建pickle文件并获取相关信息:
```python
drwaLossFunction.createPickleFiles()
info = loadFromPickle.getInfo()
```
然后,使用SummaryWriter创建一个writer对象,指定保存路径:
```python
writer = SummaryWriter('绘制损失函数曲线/单独绘制')
```
使用writer对象添加scalar数据,可以通过zip(*info)将epoch、置信度损失和定位损失分别对应起来:
```python
for epoch, conf, loc in zip(*info):
writer.add_scalar('置信度损失', conf, epoch)
writer.add_scalar('定位损失', loc, epoch)
```
关闭writer对象:
```python
writer.close()
```
如果需要进行三者对比,可以创建一个新的writer对象,并使用add_scalars函数添加多个scalar数据:
```python
writer = SummaryWriter('绘制损失函数曲线/三者对比')
for epoch, conf, loc in zip(*info):
writer.add_scalars('损失函数', {'conf':conf, 'loc':loc, 'conf loc': conf loc}, epoch)
writer.close()
```
最后,使用命令行运行tensorboard来查看结果:
```python
tensorboard --logdir=绘制损失函数曲线
```
使用matplotlib的方法如下:
首先,导入必要的库和函数:
```python
import drwaLossFunction
import loadFromPickle
import matplotlib
import matplotlib.pyplot as plt
```
创建pickle文件并获取相关信息:
```python
drwaLossFunction.createPickleFiles()
info = loadFromPickle.getInfo()
epoch, conf, loc = info
```
使用plt.plot函数绘制定位损失和置信度损失曲线:
```python
plt.plot(epoch, loc,'rx-.', label='定位损失')
plt.plot(epoch, conf, 'go-', label='置信度损失')
```
设置横纵轴的标签和图例位置:
```python
plt.xlabel('训练世代: epoch')
plt.ylabel('损失值: loss')
plt.legend(loc='upper right', frameon=True)
```
显示图形:
```python
plt.show()
```