Поменять метки на графике - PullRequest
1 голос
/ 13 апреля 2020

Как мне удастся переключить значения x и y следующего kdeplot морского происхождения (что я хочу получить, это x [i] = y [i] и y [i] = x [i] для i = 0 , ..., len (x), предполагая, что x и y являются векторами, которые хранят оси x и y)? Мой текущий вывод: enter image description here

import matplotlib as plt
import seaborn as sns
adoptions = [0.0625,0.166667,0.000381,0.00365,0.166667,0.083333,0.111111,0.00905,0.125, 0.142857,0.2,0.2,0.002132,0.25,0.041667,0.02381,0.2,0.111111,0.027027,0.111111,0.25,0.166667,0.047619,0.066667,0.012346,0.142857,0.1,0.166667,0.166667,0.25, 0.5,0.013514,0.011494,1,0.014925,0.090909, 0.25,0.001456,0.2,0.005618, 0.2, 0.00289,0.25,0.142857,0.017857,0.010638,0.05,0.333333,0.005034, 0.2, 0.5,0.2, 0.125,0.015625,0.027778,0.5,0.071429,0.001429, 0.076923,0.25,0.333333,0.019417,0.2,0.03125,0.333333,0.142857,0.028571,0.001961,0.0625,0.125,0.125,0.2,0.166667,0.090909,0.25,0.008929,0.2, 0.142857,0.5,0.333333,0.090909,0.003106,0.002222,0.2,0.333333,0.001733,0.1,0.010526,0.00885,0.333333,0.003571,0.034483,0.5,0.111111,0.083333,0.0625,0.166667,0.004329,0.2,0.020833,0.111111,0.090909,0.083333,0.25,0.166667,0.25, 0.00088,0.166667,0.142857,0.017857,0.000709,        0.111111,0.005128,0.047619,0.036697,0.166667,0.333333,0.00232,0.045455,0.166667,0.003984,0.007299,0.25,1,0.001423,0.058824,0.001229, 0.035088,0.25,0.111111,0.009901, 0.1,0.5,0.022727,0.166667,0.017241,0.001295,0.111111,0.333333,0.028571,0.016129,0.058824,0.000849,0.25,0.1,0.166667,0.25,0.333333,0.045455,0.02381,0.2,0.05,0.020408,0.5,0.001393,0.071429,0.005618,0.166667,0.022222,0.003569,0.002336,0.005435,0.000787,0.00361,0.009901,0.001513,0.017857,0.32258,0.166667,0.002584,0.004032,0.038462,0.001208,0.125,0.0625,0.076923,0.333333,0.003344,0.013158,0.026316,0.166667,0.000491,0.017241,0.142857,0.020833,0.015152,0.05,0.003175,0.034483,0.017241,0.2,0.076923,0.25,0.034483,0.002398,0.001546,0.001267,0.25,0.008547,0.003257,0.010204,0.2,0.125,0.014925,0.111111,0.010526,0.001395,0.166667,0.009091,0.009009,0.002732,0.000584,0.022222,0.004202,0.006667,0.002326,0.333333,0.033473,0.2,0.01087,0.052632,0.142857,0.25,0.019231,0.016667,0.001174,0.003484]
p = sns.kdeplot(adoptions, shade=True, color="red")
np_x = np.array(adoptions)
plt.axvline(np_x.mean(), color='gray', linestyle='dashed', linewidth=3,
                            label='Threshold: {:.2f}'.format(np_x.mean()))
plt.ylabel("π")
plt.xlabel("% ^HT")
plt.legend()
plt.show()

1 Ответ

0 голосов
/ 13 апреля 2020

Вот как вы могли бы сделать это, играя немного с get_x/yticks и set_x/yticklabels:

fig, ax = plt.subplots(figsize=(18,8))
g = sns.kdeplot(adoptions, shade=True, color="red")

yticks = ax.get_yticks()
xticks = ax.get_xticks()

n = len(min([yticks, xticks], key=len))
g.set_xticklabels(yticks[:n])
g.set_yticklabels([f'{tick:.1f}' for tick in xticks])
g.set_xticks(xticks[:n])
g.set_yticks(yticks[:n])
g.axvline(np_x.mean(), color='gray', linestyle='dashed', linewidth=3,
                            label='Threshold: {:.2f}'.format(np_x.mean()))
plt.ylabel("π")
plt.xlabel("% ^HT")
plt.show()

enter image description here

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