写一份和fig=plt.figure(figsize=(10,30)) data1=plt.subplot2grid((5,2),(0,0),colspan=2) dia0 = data.体重检查结果[data.是否糖尿病 == 0].value_counts() dia1 = data.体重检查结果[data.是否糖尿病 == 1].value_counts() df1=pd.DataFrame({'糖尿病患者':dia1,'正常人':dia0}) weight_map={0:'较瘦',1:'正常',2:'偏重',3:'肥胖'} df1.index = df1.index.map(weight_map) data1.bar(['较瘦','正常','偏重','肥胖'],df1['糖尿病患者'],color="red") data1.bar(['较瘦','正常','偏重','肥胖'],df1['正常人'],color="orange") plt.title("BMI不同的人患糖尿病情况") plt.xlabel("体重检查结果") plt.ylabel("人数") plt.legend(('糖尿病', '正常人'),loc='best')此代码运行结果相同,但是得使用其他方法运行结果相同的代码
时间: 2023-09-15 17:21:38 浏览: 45
你可以尝试使用subplots来创建一个包含两个子图的图像,然后分别在子图上绘制两个柱状图。以下是修改后的代码:
```python
import matplotlib.pyplot as plt
import pandas as pd
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 30))
dia0 = data.体重检查结果[data.是否糖尿病 == 0].value_counts()
dia1 = data.体重检查结果[data.是否糖尿病 == 1].value_counts()
df1 = pd.DataFrame({'糖尿病患者': dia1, '正常人': dia0})
weight_map = {0: '较瘦', 1: '正常', 2: '偏重', 3: '肥胖'}
df1.index = df1.index.map(weight_map)
ax1.bar(['较瘦', '正常', '偏重', '肥胖'], df1['糖尿病患者'], color="red")
ax1.set_title("BMI不同的人患糖尿病情况")
ax1.set_xlabel("体重检查结果")
ax1.set_ylabel("人数")
ax2.bar(['较瘦', '正常', '偏重', '肥胖'], df1['正常人'], color="orange")
ax2.set_xlabel("体重检查结果")
ax2.set_ylabel("人数")
plt.legend(('糖尿病', '正常人'), loc='best')
plt.show()
```
这段代码使用了subplots来创建一个大小为(10, 30)的图像,然后将图像分割为两个子图ax1和ax2。在每个子图上分别绘制了柱状图,并设置了标题、x轴标签和y轴标签。最后使用plt.legend来添加图例,并使用plt.show()显示图像。