def report(self): # plt.plot(self.solution[:,0],color = 'darkblue',label = 'Susceptible',marker = '.') plt.plot(self.solution[:, 1], color='orange', label='Infection', marker='.') plt.plot(self.solution[:, 2], color='green', label='Recovery', marker='.') plt.title('SIR Model' + ' infectionProb = ' + str(infectionProb)) plt.legend() plt.xlabel('Day') plt.ylabel('Number of people') plt.show() 这段代码有没有问题
时间: 2024-02-14 20:13:41 浏览: 19
这段代码有问题,因为它只画了感染者和康复者的数量变化曲线,而没有画易感者的数量变化曲线。根据SIR模型,易感者的数量应该随时间逐渐减少,感染者的数量应该在一定时期内快速增加,然后逐渐减少,康复者的数量应该逐渐增加。因此,应该添加一个易感者的数量变化曲线,以便全面呈现SIR模型的结果。可以在代码中添加以下内容:
```
plt.plot(self.solution[:,0], color='blue', label='Susceptible', marker='.')
```
这样就可以画出易感者的数量变化曲线了。
相关问题
#plt.plot(x1, y1, '-o', label='准确率', linewidth=2, markeredgewidth=1, markersize=8) plt.plot(x2, y2, '-o', label='精确度', linewidth=2,markeredgewidth=1, markersize=8) #plt.plot(x3, y3, '-o', label='召回率', linewidth=2, markeredgewidth=1, markersize=8) #plt.plot(x4, y4, '-o', label='F-score', linewidth=2, markeredgewidth=1, markersize=8) #plt.plot(x5, y5, '-o', label='SprayAndWaitRouter', linewidth=2, markeredgewidth=1, markersize=8) plt.ticklabel_format(style='plain', axis='y', scilimits=(0, 0)) plt.grid(False) plt.xlabel(u'数据包大小',fontsize=10) plt.ylabel(u'', fontsize=10) plt.ylim(0.40, 0.51) plt.xlim(left=0, right=2000) plt.legend() plt.show() return
这段代码是用来绘制多条折线图的,每条折线图都有自己的x轴和y轴数据。其中涉及到的参数含义如下:
- x1, y1, x2, y2, ...:分别表示第一条折线图的x轴数据、y轴数据,第二条折线图的x轴数据、y轴数据,以此类推。
- '-o':表示折线图的样式,'-'表示实线,'o'表示数据点,'-o'表示实线和数据点都有。
- label:表示折线图的标签,用于区分不同的折线图。
- linewidth:表示折线的粗细。
- markeredgewidth:表示数据点的边框粗细。
- markersize:表示数据点的大小。
- plt.ticklabel_format:用于设置y轴的数字格式。
- plt.grid:用于显示网格线。
- plt.xlabel:用于设置x轴的标签。
- plt.ylabel:用于设置y轴的标签。
- plt.ylim:用于设置y轴的范围。
- plt.xlim:用于设置x轴的范围。
- plt.legend:用于显示折线图的标签。
- plt.show:用于显示绘制的图形。
import random import matplotlib.pyplot as plt import numpy as np # 生成随机数据 # data = [] # for i in range(10): # data.append(random.randint(1, 100)) X=[30, 60, 90, 120, 150, 180, 210] Y1=[0.3, 0.5, 0.6, 0.7, 0.7, 0.8, 0.9] Y2=[1.5, 11.3, 25.7, 58.3, 202.6, 345.2, 456.6] # 绘制直线图 # plt.plot(range(1, 11), data) plt.plot(X, Y1, label='“多轮循环探索”运行时间') plt.plot(X, Y2, label='最优算法运行时间') plt.xlabel("t_i数量/个") plt.ylabel("时间/min") # plt.title() plt.legend() plt.show(),错在哪里,为什为labelh和x,y轴的名称中不能显示汉字?如何能把ti中i放在t的下角标处
这段代码存在几个错误:
1. 需要在 import random 之后和 import matplotlib.pyplot as plt 之前加上换行符。
2. `Y1` 和 `Y2` 的数值中包含了中文引号,需要将其替换为英文引号。
3. 在 `plt.xlabel("t_i数量/个")` 和 `plt.ylabel("时间/min")` 中使用了中文字符,需要在代码开头添加 `# -*- coding: utf-8 -*-`,以指定编码格式为 utf-8。
4. 想要将 ti 中的 i 放在 t 的下角标处,可以使用 LaTeX 语法,将 `plt.xlabel("t_i数量/个")` 改为 `plt.xlabel("$t_{i}$数量/个")`,即可实现。
以下是修改后的代码:
```python
import random
import matplotlib.pyplot as plt
import numpy as np
# 生成随机数据
# data = []
# for i in range(10):
# data.append(random.randint(1, 100))
X=[30, 60, 90, 120, 150, 180, 210]
Y1=[0.3, 0.5, 0.6, 0.7, 0.7, 0.8, 0.9]
Y2=[1.5, 11.3, 25.7, 58.3, 202.6, 345.2, 456.6]
# 绘制直线图
# plt.plot(range(1, 11), data)
plt.plot(X, Y1, label='多轮循环探索运行时间')
plt.plot(X, Y2, label='最优算法运行时间')
plt.xlabel("$t_{i}$数量/个")
plt.ylabel("时间/min")
# plt.title()
plt.legend()
plt.show()
```
运行后,可以得到正确的图形,并且 x 轴的标签中 ti 的下角标也已经显示出来了。