y = ("Total","Female","Male","Rural","Urban") x = df["educational level"] total_width,n = 0.8,5 width = total_width/n x=x-(total_width-width)/2 print(x) plt.bar(x,df["Total"],width = width,label="完成率") plt.bar(x+width,df["Female"],width = width,label="完成率") plt.bar(x+2*width,df["Male"],width = width,label="完成率") plt.bar(x+3*width,df["Rural"],width = width,label="完成率") plt.bar(x+4*width,df["Urban"],width = width,label="完成率") plt. legend() plt. show() 错误为unsupported operand type(s) for -: 'str' and 'float'怎么改
时间: 2023-10-26 09:04:53 浏览: 194
ocs-bp-rural-and-urban-obesity:OCS(血压)
要解决这个问题,您需要将变量 `x` 中的字符串转换为浮点数。您可以使用 `.astype(float)` 方法将其转换为浮点数类型。请修改以下代码:
```python
y = ("Total", "Female", "Male", "Rural", "Urban")
x = df["educational level"].astype(float) # 将字符串转换为浮点数
total_width, n = 0.8, 5
width = total_width / n
x = x - (total_width - width) / 2
print(x)
plt.bar(x, df["Total"], width=width, label="完成率")
plt.bar(x + width, df["Female"], width=width, label="完成率")
plt.bar(x + 2 * width, df["Male"], width=width, label="完成率")
plt.bar(x + 3 * width, df["Rural"], width=width, label="完成率")
plt.bar(x + 4 * width, df["Urban"], width=width, label="完成率")
plt.legend()
plt.show()
```
在这里,我们使用 `.astype(float)` 方法将 `df["educational level"]` 中的字符串转换为浮点数。然后,我们进行了相应的计算,并使用转换后的浮点数 `x` 进行绘图。
请确保您的数据列中的所有值都可以正确转换为浮点数,以避免出现异常。
阅读全文