Я хочу создать диаграмму рассеяния, в которой оси являются узкими коробочными диаграммами предельного распределения. Я вижу один способ достичь этого, имея несколько осей подплота с общей осью 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()
Однако, если я изменю пределы осей, это будет перемещать диаграммы рассеяния с данные, а не держать их в фиксированном положении относительно осей. Есть ли лучший способ добиться этого? Можно ли заменить шипы коробочками?