fig, ax = plt.subplots(figsize=(15, 12)) ax.barh([data["Gender"]=="Female"]data["Income"], width=0.7, label="Female") ax.barh([data["Gender"]=="Male"]data["Income"], width=0.7, label="Male") ax.set_xlabel("Income") ax.set_yticks(data.index) ax.set_yticklabels(data["MaritalStatus"]) ax.legend() plt.show()如何修改代码
时间: 2023-06-18 14:02:56 浏览: 82
您可以尝试以下代码:
```
fig, ax = plt.subplots(figsize=(15, 12))
female_income = data[data["Gender"]=="Female"]["Income"]
male_income = data[data["Gender"]=="Male"]["Income"]
ax.barh(data["MaritalStatus"], female_income, height=0.7, label="Female")
ax.barh(data["MaritalStatus"], male_income, height=0.7, left=female_income, label="Male")
ax.set_xlabel("Income")
ax.legend()
plt.show()
```
这里我们分别取出男性和女性的收入,分别作为两个 `barh` 的参数。同时在第二个 `barh` 中通过 `left` 参数将男性的柱形图放在女性柱形图的右侧。将 `set_yticks` 和 `set_yticklabels` 修改为 `data["MaritalStatus"]` 可以使 y 轴标签显示正确。
相关问题
fig, ax = plt.subplots(figsize=(15, 12)) ax.barh(data[["MaritalStatus", "Gender"]], data["Income"])
这段代码有一些问题,首先应该指定要绘制水平条形图的数据和条形的宽度。另外,不应该将两个变量合并在一起作为条形图的 x 轴,而应该使用分组条形图。以下是修改后的代码示例:
```
import matplotlib.pyplot as plt
import pandas as pd
data = pd.read_csv("data.csv")
# 分组条形图
fig, ax = plt.subplots(figsize=(15, 12))
width = 0.4
ax.barh(data.index - width/2, data["Income"][data["Gender"]=="Female"], height=width, label="Female")
ax.barh(data.index + width/2, data["Income"][data["Gender"]=="Male"], height=width, label="Male")
# 设置 x 轴标签和标题
ax.set_xlabel("Income")
ax.set_ylabel("MaritalStatus")
ax.set_title("Income by MaritalStatus and Gender")
# 设置 y 轴刻度标签
ax.set_yticks(data.index)
ax.set_yticklabels(data["MaritalStatus"])
# 添加图例
ax.legend()
plt.show()
```
这段代码会绘制一个按照婚姻状况和性别分组的条形图,横轴为收入,纵轴为婚姻状况,每个条形图代表一个性别。
fig, ax = plt.subplots(figsize=(15, 12)) ax.barh([data["Gender"]=="Female"]data["Income"], width=0.7, label="Female") ax.barh([data["Gender"]=="Male"]data["Income"], width=0.7, label="Male") ax.set_xlabel("Income") ax.set_yticks(data.index) ax.set_yticklabels(data["MaritalStatus"]) ax.legend() plt.show()
这段代码是用来画一个水平条形图,展示不同婚姻状况下男性和女性的收入情况。其中,fig, ax = plt.subplots(figsize=(15, 12)) 表示创建一个大小为 15x12 的画布和一个坐标轴对象。接着,ax.barh([data["Gender"]=="Female"]data["Income"], width=0.7, label="Female") 表示画出女性收入的条形图,[data["Gender"]=="Female"]是一个布尔型的索引,用于筛选出性别为女性的数据,然后取出他们的收入数据。同理,ax.barh([data["Gender"]=="Male"]data["Income"], width=0.7, label="Male") 表示画出男性收入的条形图。然后,ax.set_xlabel("Income") 和 ax.set_yticks(data.index) 分别设置 x 轴标签和 y 轴刻度值。ax.set_yticklabels(data["MaritalStatus"]) 表示将婚姻状况作为 y 轴标签。最后,ax.legend() 用于显示图例,plt.show() 用于展示图像。但是需要注意的是,这段代码存在语法错误,需要修改。
阅读全文