gpt4 book ai didi

python - 如何在seaborn jointgrid/jointplot中注释边际图/分布图

转载 作者:太空宇宙 更新时间:2023-11-03 20:57:25 26 4
gpt4 key购买 nike

我没有在这个方向找到任何东西,但如果我错了,请告诉我。

这个问题是针对seaborn的jointgrid方法和jointplot方法提出的,因为到目前为止,两者都为我提供了相同的基本结果。但如果一种方法更适合解决以下问题,那就没问题了。这是迄今为止我的联合图的示例:

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

df=pd.DataFrame(np.random.rand(100,2),columns=['x','y'])

fig=sns.jointplot(x=df['x'],y=df['y'])
fig=fig.plot_joint(plt.scatter)
fig=fig.plot_marginals(sns.distplot,kde=False)

结果

enter image description here

现在我想用文本注释 x 和 y 轴上的分布图形。最后,在每个条形末端上方应该有该垃圾箱总分布的百分比。但我不知道如何连接它。

使用正常的 distplot 我的代码如下所示。

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

df=pd.DataFrame(np.random.rand(100,2),columns=['x','y'])

total = float(len(df['x']))
ax=sns.distplot(df['x'],kde=False)
for p in ax.patches:
height = p.get_height()
print(p)
ax.text(p.get_x()+p.get_width()/2.,
height,
'{:1.0f}'.format((height/total)*100),
ha="center")

enter image description here

但是如何获取联合图中分布图的注释?

最佳答案

我不知道你为什么要策划两次。您只需绘制一次,然后提取补丁并使用文本以正确的坐标进行注释

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

df=pd.DataFrame(np.random.rand(100,2),columns=['x','y'])
total = float(len(df['x']))

fig=sns.jointplot(x=df['x'],y=df['y'])

for p in fig.ax_marg_x.patches:
height = p.get_height()
fig.ax_marg_x.text(p.get_x()+p.get_width()/2.,height,
'{:1.0f}'.format((height/total)*100), ha="center")

for p in fig.ax_marg_y.patches:
width = p.get_width()
fig.ax_marg_y.text(p.get_x()+p.get_width(),p.get_y()+p.get_height()/2.,
'{:1.0f}'.format((width/total)*100), va="center")

enter image description here

关于python - 如何在seaborn jointgrid/jointplot中注释边际图/分布图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55918486/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com