标签: seaborn

Seaborn因子图自定义误差条

我想在seaborn中绘制一个factorplot但是手动提供误差条而不是让seaborn计算它们.

我有一个大致如下的pandas数据框:

     model output feature  mean   std
0    first    two       a  9.00  2.00
1    first    one       b  0.00  0.00
2    first    one       c  0.00  0.00
3    first    two       d  0.60  0.05
...
77   third   four       a  0.30  0.02
78   third   four       b  0.30  0.02
79   third   four       c  0.10  0.01
Run Code Online (Sandbox Code Playgroud)

我正在输出一个看起来大致如下的情节: seaborn bar情节

我正在使用这个seaborn命令来生成图:

g = sns.factorplot(data=pltdf, x='feature', y='mean', kind='bar',
                   col='output', col_wrap=2, sharey=False, hue='model')
g.set_xticklabels(rotation=90)
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚如何让seaborn使用'std'列作为错误栏.不幸的是,重新计算相关数据框的输出将非常耗时.

这有点类似于这个问题: 使用Seaborn FacetGrid从数据框中绘制错误条

除了我无法弄清楚如何使用matplotlib.pyplot.bar函数.

有没有办法使用seaborn factorplotFacetGrid与matplotlib结合使用?

谢谢!

python plot matplotlib pandas seaborn

13
推荐指数
1
解决办法
8231
查看次数

在seaborn情节中使用sns.set

我已经找到了一个明确的答案并且找不到一个,如果之前有人问过,我道歉.我正在使用seaborn 0.6和matplotlib 1.4.3.我想在ipython笔记本中创建许多数字时暂时改变绘图的样式.

具体来说,在这个例子中,我想基于每个图更改字体大小和背景样式.

这创建了我正在寻找的图,但是全局定义了参数:

import seaborn as sns
import numpy as np

x = np.random.normal(size=100)

sns.set(style="whitegrid", font_scale=1.5)
sns.kdeplot(x, shade=True);
Run Code Online (Sandbox Code Playgroud)

然而这失败了:

with sns.set(style="whitegrid", font_scale=1.5):
    sns.kdeplot(x, shade=True);
Run Code Online (Sandbox Code Playgroud)

有:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-10-70c5b03f9aa8> in <module>()
----> 1 with sns.set(style="whitegrid", font_scale=1.5):
      2     sns.kdeplot(x, shade=True);

AttributeError: __exit__
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

with sns.axes_style(style="whitegrid", rc={'font.size':10}):
    sns.kdeplot(x, shade=True);
Run Code Online (Sandbox Code Playgroud)

哪个不会失败,但它也不会改变字体的大小.任何帮助将非常感激.

python seaborn

13
推荐指数
1
解决办法
9685
查看次数

在seaborn barplot中绘制value_counts()

我无法在海边拍摄一个画布.这是我可重复的数据:

people = ['Hannah', 'Bethany', 'Kris', 'Alex', 'Earl', 'Lori']
reputation = ['awesome', 'cool', 'brilliant', 'meh', 'awesome', 'cool']
dictionary = dict(zip(people, reputation))
df = pd.DataFrame(dictionary.values(), dictionary.keys())
df = df.rename(columns={0:'reputation'})
Run Code Online (Sandbox Code Playgroud)

然后我想得到一个条形图,显示不同声誉的价值计数.我试过了:

sns.barplot(x = 'reputation', y = df['reputation'].value_counts(), data = df, ci = None)
Run Code Online (Sandbox Code Playgroud)

sns.barplot(x = 'reputation', y = df['reputation'].value_counts().values, data = df, ci = None)
Run Code Online (Sandbox Code Playgroud)

但两者都返回空白图.

知道我能做些什么才能得到这个吗?

python pandas seaborn

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

seaborn热图图中的离散传说

我使用这里的数据来构建使用seaborn和pandas的热图.

输入csv文件位于:https://www.dropbox.com/s/5jc1vr6u8j7058v/LUH2_trans_matrix.csv? dl = 0

码:

    import pandas
    import seaborn.apionly as sns

    # Read in csv file
    df_trans = pandas.read_csv('LUH2_trans_matrix.csv')

    sns.set(font_scale=0.8)
    cmap = sns.cubehelix_palette(start=2.8, rot=.1, light=0.9, as_cmap=True)
    cmap.set_under('gray')  # 0 values in activity matrix are shown in gray (inactive transitions)
    df_trans = df_trans.set_index(['Unnamed: 0'])
    ax = sns.heatmap(df_trans, cmap=cmap, linewidths=.5, linecolor='lightgray')

    # X - Y axis labels
    ax.set_ylabel('FROM')
    ax.set_xlabel('TO')

    # Rotate tick labels
    locs, labels = plt.xticks()
    plt.setp(labels, rotation=0)
    locs, labels = plt.yticks()
    plt.setp(labels, rotation=0)

    # revert matplotlib …
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas seaborn

13
推荐指数
3
解决办法
8292
查看次数

使用Seaborn绘制多列Pandas DataFrame

假设我有列的DataFrame ['X_Axis','col_2','col_3',...,'col_n',]

我需要在X轴上绘制第一列并在Y轴上绘制.仅供参考:所有值均已根据X轴进行分组,X轴值范围为,0-25并且所有其他列值已标准化为刻度0 - 1.我希望它在相同的图形图上,而不是子图.

首选:FactorPlot,法线图.

python matplotlib dataframe pandas seaborn

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

使用seaborn时条件和输入之间的形状不一致

我正在尝试用seaborn 绘制热图。这是我试图绘制的列表:

b = [5, 4, 4, 4, 13, 4, 4, 1, 9, 4, 3, 9, 1, 4, 4, 1, 7, 1, 5, 3, 7, 1, 9, 4, 3, 9, 5, 4, 2, 1, 4, 1, 9, 4, 3, 9, 4, 8, 1, 7, 1, 9, 4, 8, 1, 7, 1, 4, 8, 1, 7, 1, 4, 1, 7, 1, 4, 10, 4, 3, 4, 7, 1, 8, 5, 10, 8, 9, 4, 1, 3, 9, 4, 1, 9, 4, …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib python-3.x seaborn

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

Seaborn displot facetgrid 不共享 y 轴

我正在尝试使用绘图函数中的内置 row/col 参数来制作 seaborn 显示网格。

但是,我的某些行和列的值存在很大差异,默认设置是共享x/y轴。

我需要弄清楚把sharey = False和放在哪里sharex = False。我无法sns.displot直接将它们传递给对象,如果我尝试事先制作一个图形,它不会合并到对象中displot

因此,在下面的示例中,我需要将第二行缩放为最大 ~0.5,而不是像 (0,1) 中的图那样 0.7,这会影响y下面所有图的轴比例。

最小可重复示例

tips = sns.load_dataset("tips")
plt.figure(figsize = (6, 6))
sns.displot(tips, x = "tip", multiple = "stack", kind = "kde", bw_adjust=.3, common_norm = False, col = "sex", row = "time")
Run Code Online (Sandbox Code Playgroud)

python plot seaborn

13
推荐指数
1
解决办法
3924
查看次数

在 sns histplot 上设置顺序

我正在尝试使用seaborn 设置堆叠的顺序histplot。下面的情节很好,但我希望改变顺序,以便Up, Down, Left, Right从左到右阅读时可以读取。

尝试通过order或时出现错误col_order

raise AttributeError('{!r} object has no property {!r}'

AttributeError: 'Rectangle' object has no property 'order'
Run Code Online (Sandbox Code Playgroud)

不过,在未传递订单时它工作正常。

import pandas as pd
import seaborn as sns

df = pd.DataFrame({      
    'Label' : ['A','B','C','B','B','C','C','B','B','A','C','A','B','A','C','A'],   
    'Item' : ['Up','Left','Up','Left','Down','Right','Up','Down','Right','Down','Right','Up','Up','Right','Down','Left'],        
   })

g = sns.histplot(data = df, 
            x = 'Item', 
            hue = 'Label',
            #order = ['Up','Down','Left','Right'],
            multiple = 'fill', 
            shrink = 0.8, 
            discrete = True,
            legend = True,
            )
Run Code Online (Sandbox Code Playgroud)

python pandas seaborn

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

改变seaborn热图中的某些方块

假设我有一个看起来像这样的热图(轴被修剪掉): 在此输入图像描述

我希望能够改变某些方块以表示统计显着性.我知道我可以掩盖不具有统计意义的方块,但我仍然希望保留该信息(而不是将值设置为零).执行此操作的选项包括1)使某些正方形上的文本变粗,2)添加类似阴影的功能,以便某些正方形具有点画,或3)向某些正方形添加符号.

有什么想法吗?谢谢!

python matplotlib heatmap pandas seaborn

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

用seaborn绘图时如何处理缺失值?

我使用lambda跟随函数用NaN替换了缺少的值:

data = data.applymap(lambda x: np.nan if isinstance(x, basestring) and x.isspace() else x)

,数据是我正在处理的数据帧.

之后使用seaborn,我尝试绘制其中一个属性,使用seaborn.distplot进行alcconsumption,如下所示:

seaborn.distplot(data['alcconsumption'],hist=True,bins=100)
plt.xlabel('AlcoholConsumption')
plt.ylabel('Frequency(normalized 0->1)')
Run Code Online (Sandbox Code Playgroud)

它给了我以下错误:

AttributeError: max must be larger than min in range parameter.
Run Code Online (Sandbox Code Playgroud)

python data-analysis python-2.7 pandas seaborn

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