Seaborn 条带图和误差条
Seaborn stripplot and errorbars
我有一个 pandas 数据框,其中包含如下所示的分类数据:
cat DM3_r DM3_r_err
133 stuff 9.908949 0.442363
1347 foo 1.156828 0.130174
132 bar 0.818709 0.593341
1350 stack 0.798348 0.089866
977 over 0.724274 0.462868
1054 flow 0.546665 0.538208
1228 run 0.425070 0.571659
1009 run 0.316554 0.259385
1109 yadG 0.304657 0.401482
我正在使用 seaborn 的 stripplot 来可视化数据:
seaborn.stripplot(df.DM3_r, df.cat, size=7, orient="h",
palette="Reds_r", edgecolor="gray", ax=ax.flat[i], linewidth=.5)
在这种情况下, 用于 "cat"
的不同组。这很好用。但是,我想添加错误 "DM3_r_err"
.
我已经尝试从 matplotlib
errorbar
在顶部添加一个错误条图,但我无法提取 seaborn 图表中点的位置。这可能是因为我使用的是子图。
有没有直接使用seaborn的方法?
这是脱衣图的样子(左),右侧是我的目标:
可能有更聪明的方法来 select 来自 Pandas.DataFrame
的数据,但像这样的方法可行:
import pandas as pd
import matplotlib.pylab as pl
import seaborn
import numpy as np
pl.close('all')
data = [['hsdM', 3.908949, 1.442363],
['lolD', 1.156828, 0.456434],
['lolD', 3.156828, 0.230174],
['acrB', 0.546665, 0.538208],
['msbA', 0.425070, 0.571659],
['msbA', 2.425070, 1.571659],
['emrA', 0.316554, 1.259385],
['yadG', 0.304657, 0.401482]]
df = pd.DataFrame(data, columns=['gene','DM3_r','DM3_r_err'])
pl.figure()
ax = pl.subplot(111)
# Everywhere below you would have to replace `ax` with your `ax.flat[i]`
sp = seaborn.stripplot(df.DM3_r, df.gene, size=7, orient="h",
palette="Reds_r", edgecolor="gray", ax=ax, linewidth=.5)
for y,ylabel in zip(ax.get_yticks(), ax.get_yticklabels()):
f = df['gene'] == ylabel.get_text()
ax.errorbar(df.DM3_r[f].values, np.ones_like(df.DM3_r[f].values)*y, xerr=df.DM3_r_err[f].values, ls='none')
我有一个 pandas 数据框,其中包含如下所示的分类数据:
cat DM3_r DM3_r_err
133 stuff 9.908949 0.442363
1347 foo 1.156828 0.130174
132 bar 0.818709 0.593341
1350 stack 0.798348 0.089866
977 over 0.724274 0.462868
1054 flow 0.546665 0.538208
1228 run 0.425070 0.571659
1009 run 0.316554 0.259385
1109 yadG 0.304657 0.401482
我正在使用 seaborn 的 stripplot 来可视化数据:
seaborn.stripplot(df.DM3_r, df.cat, size=7, orient="h",
palette="Reds_r", edgecolor="gray", ax=ax.flat[i], linewidth=.5)
在这种情况下, 用于 "cat"
的不同组。这很好用。但是,我想添加错误 "DM3_r_err"
.
我已经尝试从 matplotlib
errorbar
在顶部添加一个错误条图,但我无法提取 seaborn 图表中点的位置。这可能是因为我使用的是子图。
有没有直接使用seaborn的方法?
这是脱衣图的样子(左),右侧是我的目标:
可能有更聪明的方法来 select 来自 Pandas.DataFrame
的数据,但像这样的方法可行:
import pandas as pd
import matplotlib.pylab as pl
import seaborn
import numpy as np
pl.close('all')
data = [['hsdM', 3.908949, 1.442363],
['lolD', 1.156828, 0.456434],
['lolD', 3.156828, 0.230174],
['acrB', 0.546665, 0.538208],
['msbA', 0.425070, 0.571659],
['msbA', 2.425070, 1.571659],
['emrA', 0.316554, 1.259385],
['yadG', 0.304657, 0.401482]]
df = pd.DataFrame(data, columns=['gene','DM3_r','DM3_r_err'])
pl.figure()
ax = pl.subplot(111)
# Everywhere below you would have to replace `ax` with your `ax.flat[i]`
sp = seaborn.stripplot(df.DM3_r, df.gene, size=7, orient="h",
palette="Reds_r", edgecolor="gray", ax=ax, linewidth=.5)
for y,ylabel in zip(ax.get_yticks(), ax.get_yticklabels()):
f = df['gene'] == ylabel.get_text()
ax.errorbar(df.DM3_r[f].values, np.ones_like(df.DM3_r[f].values)*y, xerr=df.DM3_r_err[f].values, ls='none')