标签: seaborn

每个色调带有堆叠条的计数图

我正在寻找一种根据“色调”绘制带有堆叠条的计数图的有效方法。标准色调行为是根据第二列的值将计数拆分为平行条,我正在寻找的是一种将色调条堆叠以便快速比较总数的有效方法。

让我用一个来自泰坦尼克号数据集的例子来解释:

import pandas as pd
import numpy as np
import seaborn as sns
%matplotlib inline

df = sns.load_dataset('titanic')
sns.countplot(x='survived',hue='class',data=df)
Run Code Online (Sandbox Code Playgroud)

提供带有计数图和色调的标准 Seaborn 行为 带有计数图和色调的标准 Seaborn 行为

我正在寻找的是类似于每个色调的堆叠条 每个色调的堆叠条

为了获得最后一张图片,我使用了以下代码

def aggregate(rows,columns,df):
    column_keys = df[columns].unique()
    row_keys = df[rows].unique()

    agg = { key : [ len(df[(df[rows]==value) & (df[columns]==key)]) for value in row_keys]
               for key in column_keys }

    aggdf = pd.DataFrame(agg,index = row_keys)
    aggdf.index.rename(rows,inplace=True)

    return aggdf

aggregate('survived','class',df).plot(kind='bar',stacked=True)
Run Code Online (Sandbox Code Playgroud)

我相信有一些更有效的方法。我知道 seaborn 对堆叠条形不太友好……所以我尝试用我的函数重新排列数据集并使用 matplotlib,但我想还有一种更聪明的方法可以做到这一点。

非常感谢!

python bar-chart pandas stacked-chart seaborn

12
推荐指数
1
解决办法
3万
查看次数

通过pip安装最新版本的seaborn(0.9.0)

我想用seaborn包创建一个catplot,我知道为了能够做到这一点,我需要最新版本的seaborn(0.9.0).我用conda安装了包:

 conda install seaborn 
Run Code Online (Sandbox Code Playgroud)

但它下载的版本为0.8.1.

因此我使用pip安装了我想要的版本:

 pip3 install seaborn==0.9.0
Run Code Online (Sandbox Code Playgroud)

但是每当我运行我的代码时,我都会遇到同样的错误: AttributeError:module'seaborn'没有属性'catplot'(仅在最新版本中提供的属性).

有人可以帮忙吗?

python seaborn

12
推荐指数
1
解决办法
2万
查看次数

如何在python中更改seaborn中的X轴范围?

默认情况下,seaborn 在 distplots 中置换 X 轴范围从 -5 到 35。但我需要用 1 个单位显示 X 轴范围从 1 到 30 的 distplots。我怎样才能做到这一点?

python seaborn data-science

12
推荐指数
2
解决办法
6万
查看次数

如何为数据框中的所有列绘制 Seaborn Distplots 矩阵

想象一下,我有一个包含 9 列的数据框。我希望能够达到与 df.hist() 相同的效果,但使用 sns.distplot()。

换句话说,我希望能够在 3 行 3 列的可视化中绘制数据框中每一列的 sns.distplot(),其中每个子图代表每列的唯一 sns.distplot() 总计数据框中的列数。

我对数据框的轴和列使用 for 循环进行了一些试验,但我只能获得指定列的结果。我不确定如何表示适用于行和列的代码。

我还研究了 sns.FacetGrid,但我不确定如何使用 FacetGrid 解决这个问题。

我发现 df.hist() 函数正是我想要的,但我希望能够使用 sns.distplot 来完成与 df.hist() 输出相同的表示形式中的所有列。

如果它有助于放置数据框的上下文,我基本上是在阅读 Google Colab 的加利福尼亚住房数据集的训练和测试集,其中包含除 Ocean_proximity 之外的所有列。如果您想使用该数据集帮助我解决这个问题,请从 Kaggle 获取并删除 Ocean_proximity 列。

我的 9 列方法:

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

df = pd.read_csv('housing.csv')
df.drop('ocean_proximity', axis=1, inplace=True)
fig, axes = plt.subplots(ncols=len(df.columns), figsize=(30,15))
for ax, col in zip(axes, df.columns):
  sns.distplot(df[col], ax=ax)
  plt.tight_layout() 
plt.show()
Run Code Online (Sandbox Code Playgroud)

python pandas seaborn

12
推荐指数
2
解决办法
1万
查看次数

如何在seaborn图中设置x轴刻度标签?

我无法为 seaborn 线图正确设置 x 轴刻度标签。

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

df = pd.DataFrame({'a':np.random.rand(8),'b':np.random.rand(8)})
sns.set(style="darkgrid")
g = sns.lineplot(data=df)
g.set_xticklabels(['2011','2012','2013','2014','2015','2016','2017','2018'])
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

x 轴上的年份未正确对齐。

python seaborn

12
推荐指数
2
解决办法
3万
查看次数

改变seaborn情节线的颜色

我无法更改 seaborn 中 2d 线的颜色。我的图中有 2 条线,我想为它们分配不同的颜色。

sns.set(style="whitegrid")
data = pd.DataFrame(result_prices, columns=['Size percentage increase'])
data2 = pd.DataFrame(result_sizes, columns=['Size percentage increase'])
sns_plot = sns.lineplot(data=data, color='red', linewidth=2.5)
sns_plot = sns.lineplot(data=data2, linewidth=2.5)
sns_plot.figure.savefig("size_percentage_increase.png")

Run Code Online (Sandbox Code Playgroud)

但是color='red'不变色,为什么呢?

python colors seaborn

12
推荐指数
1
解决办法
3万
查看次数

如何从 seaborn / matplotlib 图中删除或隐藏 x 轴标签

我有一个箱线图,需要删除 x 轴('user_type' 和 'member_gender')标签。鉴于以下格式,我该怎么做?

sb.boxplot(x="user_type", y="Seconds", data=df, color = default_color, ax = ax[0,0], sym='').set_title('User-Type (0=Non-Subscriber, 1=Subscriber)')
sb.boxplot(x="member_gender", y="Seconds", data=df, color = default_color, ax = ax[1,0], sym='').set_title('Gender (0=Male, 1=Female, 2=Other)')
Run Code Online (Sandbox Code Playgroud)

python matplotlib python-3.x pandas seaborn

12
推荐指数
1
解决办法
3万
查看次数

转换错误:无法将值转换为轴单位

我有一个dd包含 84 行和 3 列的数据框。

现在我想用它绘制一个区域图,并使用它的索引作为 xticks,所以我执行以下操作:

dd.plot(kind='area')
plt.show()
Run Code Online (Sandbox Code Playgroud)

但我得到了这个结果: 结果

(PS 我没有足够的声誉来张贴图片,所以我把这个链接放在这里。)

结果发现有些xticks是自动隐藏的:应该有84个xticks,但是只显示了9个(好像是自动隐藏的)。

我在这里找到了一个类似的问题,但是当我尝试链接中提到的方法时,我得到了一个CnoversionError

ConversionError: Failed to convert value(s) to axis units: Index(['!', '"', '#', '$', '%', '&', ''', '(', ')', '*', '+', ',', '-', '.',
       '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<',
       '=', '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
       'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib pandas seaborn

12
推荐指数
2
解决办法
4万
查看次数

如何增加 Seaborn Line 的线条粗细

我有一些 seaborn 线图,但我不知道如何增加线条的宽度。

这是我的代码

#graph 1
sns.lineplot(x="date", y="nps", data=df_nps, ax=ax1, label="NPS", color='#0550D0')
sns.lineplot(x="date", y="ema28", data=df_nps, ax=ax1, label="EMA28", color='#7DF8F3')
sns.lineplot(x="date", y="ema7", data=df_nps, ax=ax1, label="EMA7", color='orange')

#graph 2
dfz_nps_lineplot = sns.lineplot(x="date", y="nps", data=dfz_nps, ax=ax2, label="NPS", color='#0550D0')
dfz_nps_lineplot = sns.lineplot(x="date", y="ema28", data=dfz_nps, ax=ax2, label="EMA28", color='#7DF8F3')
dfz_nps_lineplot = sns.lineplot(x="date", y="ema7", data=dfz_nps, ax=ax2, label="EMA7", color='orange')

#graph3
dfp_nps_lineplot = sns.lineplot(x="date", y="nps", data=dfp_nps, ax=ax3, label="NPS", color='#0550D0')
dfp_nps_lineplot = sns.lineplot(x="date", y="ema28", data=dfp_nps, ax=ax3, label="EMA28", color='#7DF8F3')
dfp_nps_lineplot = sns.lineplot(x="date", y="ema7", data=dfp_nps, ax=ax3, label="EMA7", color='orange')

# formatting

plt.show()
Run Code Online (Sandbox Code Playgroud)

这就是我的线图现在的样子。

https://gyazo.com/1aecfef9e71bfc9d6c0b5f603db93bd1

python matplotlib seaborn

12
推荐指数
2
解决办法
1万
查看次数

Seaborn AttributeError: module 'seaborn' 没有属性 'displot' AND conda 解决环境失败

根据 seaborn 文档,这里 seaborn.distplot()已被弃用,支持的图为:seaborn.displot()seaborn.histplot()

但是,当我尝试使用displot()或 时histplot()出现以下属性错误:

AttributeError: module 'seaborn' has no attribute 'displot'

注意我可以成功运行seaborn.jointplot()和其他各种。

我发现这个 SO post Module Seaborn 没有属性 ''但这似乎不是我问题的解决方案。

我已经seaborn版本0.10.1我安装的MacOS版本10.15.5(19F101)

我今天早些时候有seaborn 0.9.0并且遇到了同样的问题,所以我使用App Cleaner & Uninstaller应用程序删除了我的Anaconda发行版并重新安装。现在我有seaborn 版本 0.10.1

Anaconda的全新安装不应该处理所有依赖项和要求吗?

请参见下面的属性错误屏幕截图。任何想法发生了什么?

属性错误

更新:

上面的图似乎最近才从seaborn 0.11.0开始可用。所以我正在尝试通过以下方式安装新的 seaborn:conda install seaborn==0.11.0但是conda和/或频道似乎有问题。它试图解决环境问题,但它处于永无止境的循环中。我终止了这个过程,然后再试一次,同样的事情。

(base)MacBook-Air:$ conda install seaborn==0.11.0
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial …
Run Code Online (Sandbox Code Playgroud)

python anaconda conda seaborn

12
推荐指数
1
解决办法
2万
查看次数