Как аннотировать маржинальные участки / участки распределения в морской сетке / совместной зоне - PullRequest
1 голос
/ 30 апреля 2019

Я ничего не нашел в этом направлении, но, если я ошибаюсь, пожалуйста, дайте мне знать.

Вопрос ставится как для метода совместной сетки, так и для метода совместных участков из Морского Рога, так как оба дают мнете же основные результаты до сих пор.Но если один из методов лучше для следующего вопроса, это не проблема.Вот пример моего совместного сюжета:

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 с текстом.Наконец, над каждым концом бара должен быть процент от общего распределения этих корзин.Но я не знаю, как это подключить.

При нормальном распределенном графике мой код выглядит следующим образом.

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

Но как мне получить аннотацию на распределительных участках в совмещенном участке?

1 Ответ

0 голосов
/ 30 апреля 2019

Я не знаю, почему вы замышляете вещи дважды.Вам просто нужно построить его один раз, а затем извлечь патчи и использовать текст для аннотирования с правильными координатами

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...