Как установить легенду вне трехмерных осей в matplotlib? - PullRequest
0 голосов
/ 24 января 2019

Я работаю с базовой трехмерной диаграммой рассеяния в matplotlib.Простой пример кода следующий:

from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt
import numpy as np

XX = np.array([[1,6,7,3,2],[8,11,7,5,12],[2,7,1,30,12],[15,3,17,2,1]])

fig = plt.figure()
ax = plt.axes(projection='3d')

xs = XX[indx, 0]
ys = XX[indx, 1]
zs = XX[indx, 2]


for i in range(11):
    ax.scatter3D(xs, ys, zs, c='b', marker='o', label='item'+str(i), s=100.5, alpha=1)

ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')

plt.title('Number of Components = 3')
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5), fontsize=7)
plt.tight_layout()
plt.show()

Ниже приводится мой выходной график:

enter image description here

В моем выходном графике, легенда перекрывается с надписью для оси Z.Я хочу разместить легенду вне поля трехмерной оси, предпочтительно справа от графика (то есть справа от ZLabel) так, чтобы оно не перекрывалось ничем ,Как я могу это сделать?

1 Ответ

0 голосов
/ 24 января 2019

Общая стратегия размещения легенды вне сюжета показана в Как вывести легенду из сюжета

Здесь вы можете оставить больше места справа и переместить легенду еще дальше вправо

fig.tight_layout()
fig.subplots_adjust(right=0.8)
ax.legend(loc='center left', bbox_to_anchor=(1.07, 0.5), fontsize=7)

enter image description here

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