gpt4 book ai didi

Python seaborn 绘图 : having a small issue while writing a function for bar plots

转载 作者:行者123 更新时间:2023-12-02 07:42:55 26 4
gpt4 key购买 nike

我正在尝试使用以下内容编写条形图函数:

def bar_plot(data, x, y, title):
sns.set_style('darkgrid')
data = data.sort_values(ascending=False, by=x)
data = data.head(n=10)
if data[x].any() > 1000000:
data[x] = data[x] / 1000000
ax = sns.catplot(data=data, x=x, y=y, kind='bar')
ax.set_xlabels(x + ' ($ Millions)', size=15)
plt.subplots_adjust(top=0.9)
ax.set_ylabels(y, size=15)
ax.fig.suptitle(title, size=35)
else:
ax = sns.catplot(data=data, x=x, y=y, kind='bar')
ax.set_xlabels(x, size=15)
plt.subplots_adjust(top=0.9)
ax.set_ylabels(y, size=15)
ax.fig.suptitle(title, size=35)

我希望它能够与我正在使用的几个不同的数据帧一起使用。我有一些数据框包含很多大值,一些数据框包含小值。我想将那些具有较大值的数据帧除以一百万,以使图表更易于阅读。我最初的理解是 data[x].any() > 1000000 会找到数据帧中超过一百万的任何行并返回 True 然后运行 ​​if 语句。然而,即使数据帧的值明显超过一百万,它也会跳到 else 语句。

在尝试找出问题时,我通过查找百万以下的值来反转 if 语句:

def bar_plot(data, x, y, title):
sns.set_style('darkgrid')
data = data.sort_values(ascending=False, by=x)
data = data.head(n=10)
if data[x].any() < 1000000:
ax = sns.catplot(data=data, x=x, y=y, kind='bar')
ax.set_xlabels(x, size=15)
plt.subplots_adjust(top=0.9)
ax.set_ylabels(y, size=15)
ax.fig.suptitle(title, size=35)
else:
data[x] = data[x] / 1000000
ax = sns.catplot(data=data, x=x, y=y, kind='bar')
ax.set_xlabels(x + ' ($ Millions)', size=15)
plt.subplots_adjust(top=0.9)
ax.set_ylabels(y, size=15)
ax.fig.suptitle(title, size=35)

此再现现在只返回 if 语句,永远不会转到 else 语句,即使值远远超过一百万。我有点困惑为什么即使条件翻转,也只有函数的相同部分起作用。

最佳答案

问题出在你的条件的排序上。

这有效:

(data[x]>1000000).any() 

当您执行data[x].any() > 1000000时,您正在询问Python:

我的列中是否有任何 True 值?这只能得到 True (1) 或 False(0)。

那么你问的是:

1(或0)是否大于1000000?这将始终为 False,因此您始终会转到 else 语句。

希望这能解决问题!

关于Python seaborn 绘图 : having a small issue while writing a function for bar plots,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59287256/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com