我想在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命令来生成图:
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 factorplot或FacetGrid与matplotlib结合使用?
谢谢!
我已经找到了一个明确的答案并且找不到一个,如果之前有人问过,我道歉.我正在使用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)
哪个不会失败,但它也不会改变字体的大小.任何帮助将非常感激.
我无法在海边拍摄一个画布.这是我可重复的数据:
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)
但两者都返回空白图.
知道我能做些什么才能得到这个吗?
我使用这里的数据来构建使用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) 假设我有列的DataFrame ['X_Axis','col_2','col_3',...,'col_n',]
我需要在X轴上绘制第一列并在Y轴上绘制.仅供参考:所有值均已根据X轴进行分组,X轴值范围为,0-25并且所有其他列值已标准化为刻度0 - 1.我希望它在相同的图形图上,而不是子图.
首选:FactorPlot,法线图.
我正在尝试用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) 我正在尝试使用绘图函数中的内置 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) 我正在尝试使用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) 我希望能够改变某些方块以表示统计显着性.我知道我可以掩盖不具有统计意义的方块,但我仍然希望保留该信息(而不是将值设置为零).执行此操作的选项包括1)使某些正方形上的文本变粗,2)添加类似阴影的功能,以便某些正方形具有点画,或3)向某些正方形添加符号.
有什么想法吗?谢谢!
我使用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 ×10
seaborn ×10
pandas ×7
matplotlib ×5
plot ×2
dataframe ×1
heatmap ×1
numpy ×1
python-2.7 ×1
python-3.x ×1