首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >海运PairPlot的正确对角线Y轴

海运PairPlot的正确对角线Y轴
EN

Stack Overflow用户
提问于 2020-12-18 01:16:09
回答 1查看 447关注 0票数 2

我正在尝试使用seaborn pairplot进行一些可视化,我需要有合适的对角线Y轴(可见!)根本没有规格化(只是计数)或密度规格化( bin值的总和= 1)。做这件事的更好方法是什么?

这就是我想要做的:

代码语言:javascript
复制
import numpy as np
import seaborn as sns
import pandas as pd

data = np.random.normal(0,2,[1000,3])

sss = sns.pairplot(pd.DataFrame(data),corner=True)
sss.axes[0][0].yaxis.tick_right()
sss.axes[0][0].get_yaxis().set_visible(True)
sss.axes[0][0].axis('on')
sss.axes[0][0].yaxis.set_label_position("right")
sss.axes[0][0].set_ylabel('Counts')

它给我提供了以下数字:

显然,我这里的归一化是错误的(它可能是在最大值上归一化的),并且y轴线本身丢失了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-18 05:21:38

默认情况下,每行上的y轴是共享的,对角线图的y轴基本上是没有意义的。

如果你想在那里绘制一些东西,并保持你试图绘制的数据的规模,那么你应该以某种方式“打破”共享轴。我能想到的最简单的方法是使用twinx()在相同的位置创建一个新的轴。

当然,您需要使用PairGrid()而不是pairplot()

代码语言:javascript
复制
import numpy as np
import seaborn as sns
import pandas as pd

def my_hist(x, label, color):
    ax0 = plt.gca()
    ax = ax0.twinx()
    
    sns.despine(ax=ax, left=True, top=True, right=False)
    ax.yaxis.tick_right()
    ax.set_ylabel('Counts')
    
    ax.hist(x, label=label, color=color)

data = np.random.normal(0,2,[1000,3])
df = pd.DataFrame(data)

g = sns.PairGrid(df,corner=True)
g.map_diag(my_hist)
g.map_lower(sns.scatterplot)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65345377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档