python - 在 seaborn 中突出显示联合图的一部分
问题描述
我在 seaborn 中生成了一些具有专业外观的人物。
例如:
import seaborn as sns
sns.set_style('white')
sns.set_context('paper', font_scale=2)
sns.set_style('ticks', {'axes.edgecolor': '0',
'xtick.color': '0',
'ytick.color': '0'})
g = sns.jointplot(x=np.random.rand(1000,3), y=np.random.rand(1000,3),
marginal_kws=dict(bins=50, rug=True,color="k"),
annot_kws=dict(stat="r"),
s=40, edgecolor="k",color='w', linewidth=1)
sns.despine(offset=5, trim=True)
g.fig.set_figheight(12)
g.fig.set_figwidth(12)
现在,我想突出显示图中的一部分。
我希望顶部直方图在某个范围内具有不同的颜色,例如 x<0.25 的所有条形图都应该是红色的,并且散点图中的对应点也是如此。
如何获得它?
我可以使用原始数据的子集重复绘图操作,但直方图缩放会有所不同。
解决方案
注意:这不是一个完整的答案
对于散点,您可以注释小于给定值的点:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.DataFrame(columns=("x", "y", "x_cor_to_ann"))
df['x'] = pd.Series(np.random.randn(10))
df['y'] = pd.Series(np.random.randn(10))
df['x_cor_to_ann'] = df['x'] <= 0.25
print(df)
g = sns.jointplot("x", "y", data=df, kind="reg",
marginal_kws=dict(bins=50, rug=True,color="k"),
annot_kws=dict(stat="r"),
color='b')
highlight = df[df['x']<=0.25]
def annotate(data_row):
r = data_row[1]
plt.gca().annotate(data_row[0], xy=(r["x"], r["y"]),
xytext=(2,2) , textcoords ="offset points")
for data_row in highlight.iterrows():
annotate(data_row)
plt.show()
sns.despine(offset=5, trim=True)
g.fig.set_figheight(12)
g.fig.set_figwidth(12)
因此,如果您的数据框如下所示:
x y x_cor_to_ann
0 1.180725 0.368682 False
1 1.816001 0.104237 False
2 1.074462 1.253019 False
3 -0.219031 -0.670320 True
4 0.402527 -0.899265 False
5 -0.960773 2.942559 True
6 0.067588 0.508284 True
7 -0.051982 -0.194170 True
8 -0.016429 0.101746 True
9 1.607429 0.736233 False
哪个应该是这样的:
哪个应该注释行,其余的没有注释。您当然可以使用注释而不是注释索引号来做更多的事情。
使用直方图,我不知道该怎么做,抱歉:(。seaborn doc 也无济于事。
x<=0.25
推荐阅读
- python - tf.keras & tf.estimator & tf.dataset
- wordpress - 自定义帖子类型类别及其帖子列表
- angularjs - 这是使用 angularjs 导出到 Excel 的正确方法吗
- visual-studio - 我的批处理文件没有在构建后事件中运行
- java - 钩子不在 Cucumber 4 中运行
- android - 如何指定下拉微调器的高度?
- c++ - android studio中的外部C++源文件?
- python - Threading Daemon = True,但使用启动器线程作为主线程?
- ios - IOS splitviewcontroller 和大小类
- typescript - lodash 的 cloneDeep 方法是否也应该单独克隆数据类型和数据