为什么即使我已经将它们包括在for循环中,图表的标题和x标签也都相同?

猫王

我希望条形图具有自己的标题和x轴标签,因此我在for循环中包括了plt.titleand plt.xlabel

但是,运行代码后,两个图形的标题和x轴标签都相同。第一张图Histogram of gender的标题应为,第二张图的标题应为Histogram of job我的代码有什么问题,或者我做错了哪些部分,尤其是循环?

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd
from scipy import stats

# first data is age
# 2nd data is gender
# third data is saving
# 4th data is job

data = np.array([[11, "male",1222,"teacher"],[23,"female",333,"student"],
                 [15,"male",542,"security"],[23,"male",4422,"farmer"],[25,"female",553,"farmer"],
                 [22, "male", 221, "teacher"],[27, "male", 333, "agent"],[11, "female", 33, "farmer"]])

data_feature_names = ["age","gender","saving","job"]

# type of the data above
types = ["num","cat","num","cat"]
idx2 = []


for index, _type in enumerate(types):
    if _type == 'cat':
        idx2.append(index)


# Order of x axis label
ss = [["female","male"],["farmer","agent","security","teacher","student"]]


for k in range(0,len(ss)):
    for j in idx2:
        pandasdf = pd.DataFrame(data)
        sns.countplot(x=j, data=pandasdf, order = ss[k])
        plt.title("Histogram of " + data_feature_names[j])
        plt.xlabel(data_feature_names[j])
    plt.show()
变石

您的订购顺序ss和列名称idx2是配对的,因此您可以使用一个循环并最终获得所需的性别和工作直方图结果(但在这种情况下,您不会最终获得年龄或储蓄的直方图)。您的示例的最后几行将变为:

for k, j in zip(range(0, len(ss)), idx2):
    pandasdf = pd.DataFrame(data)
    sns.countplot(x=j, data=pandasdf, order=ss[k])
    plt.title("Histogram of " + data_feature_names[j])
    plt.xlabel(data_feature_names[j])
    plt.show()

您可以通过几种方法来简化此过程,以便于调试。例如,您可以idx2使用列表理解来缩短循环时间

idx2 = [ix for ix, f in enumerate(types) if f == "cat"]

我在下面提供了另一个示例,其中包含较少的代码行,但是对原始脚本进行了更多修改。

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

data = pd.DataFrame(
    [
        [11, "male", 1222, "teacher"],
        [23, "female", 333, "student"],
        [15, "male", 542, "security"],
        [23, "male", 4422, "farmer"],
        [25, "female", 553, "farmer"],
        [22, "male", 221, "teacher"],
        [27, "male", 333, "agent"],
        [11, "female", 33, "farmer"],
    ],
    columns=["age", "gender", "saving", "job"],
)

ordering = {
    "gender": ["female", "male"],
    "job": ["farmer", "agent", "security", "teacher", "student"],
}

for column in ['gender', 'job']:
    ax = sns.countplot(x=column, data=data, order=ordering.get(column, None))
    ax.set_title("Histogram of {}".format(column))
    ax.set_xlabel(column)
    plt.show()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我可以在Python for循环中为迭代器和序列使用相同的名称?

为什么我在循环中创建的对象变得相同?

为什么即使我已经在不同的外壳上,我也继续得到相同的$ SHELL

为什么即使我给它们相同的高度,我的物体也有不同的高度?

即使它们两个指针都指向相同的地址,为什么以下内容不起作用?

Pandas:导入多个数据帧,更改标题并将它们附加到循环中

即使它们在逻辑上是相同的,为什么我得到不同的输出?

为什么pow(x,1 / p)和pow(x,1.0 / p)不相等,即使打印它们的值会得到相同的结果

为什么即使float和int的位数相同,它们的最大值也是如此不同?

为什么我可以在for循环中多次重定义相同的变量,但不能在循环外?

我为什么不能将它们除以整数?

当我为数组中的元素输入值时,在for循环中,在for循环之后将它们转换

为什么我们在 Deque 中有 offer(E e) 和 offerLast(E e) 方法,即使它们解决了相同的目的

为什么即使我已经将它导入到 HTML 文件的头部,浏览器也会告诉我没有定义解析?

我在for循环中有6个图,但是我正在努力使用plt.subplots将它们设置为2x3格式

为什么目录的大小不同,即使它们的内容相同?

具有@Value注释和单个方法的字段。我应该让它们都静止吗?为什么/为什么不呢?

为什么我从for循环中获取IndexError?

为什么我的for循环中的strncpy无效?

为什么我对powerset问题的解决方案不正确?我已经包括了我的递归和迭代方法

为什么我在4个循环中有相同的内容?可湿性粉剂

为什么即使死循环中包含一个死循环,我还是会有死锁?

为什么“ --i”和“ i--”在Java for循环中具有相同的行为?

为什么即使我之前已经附加了数据框,也无法在“ for循环”中更改数据框的值?

为什么双花括号的子代会导致我的React.memo组件重新渲染,即使它们的值相同?

当我在foreach和for循环中放入变量时,为什么我的脚本停止运行

联接创建.x和.y列,但是它们具有相同的内容-为什么?

为什么即使不满足“if”语句的条件,“else”语句也没有在我的循环中执行?

为什么在循环中创建的对象具有相同的地址?