Matplotlib: заменить оси рассеяния на boxplot - PullRequest
0 голосов
/ 19 марта 2020

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

plt.scatter(x, y)
plt.boxplot(x, vert=False, positions=[ypos], widths=ywidth)
plt.boxplot(y, vert=True, positions=[xpos], widths=xwidth)

ax = plt.gca()
q = 25, 50, 75
plt.setp(ax, frame_on=False, xticks=np.percentile(x, q), yticks=np.percentile(y, q))
ax.xaxis.set_major_formatter(FormatStrFormatter('%.2f'))
ax.yaxis.set_major_formatter(FormatStrFormatter('%.2f'))

Где я могу взять:

ypos = y.min()
ywidth = 0.01*y.ptp()
xpos = x.min()
xwidth = 0.01*x.ptp()

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

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