我正在使用matplotlib中的基本3D散点图。下面是一个简单的代码示例:
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()
以下是我的输出图:
在我的输出图中,图例与Z轴的标签重叠。我想将图例放置在三维坐标轴框的外部,最好位于图的右侧(即ZLabel的右侧),以使其不与任何东西重叠。我该怎么办?
答案 0 :(得分:2)
将图例放置在情节之外的一般策略显示在How to put the legend out of the plot
中在这里您可能需要在右侧留出更多空间,并将图例进一步移到右侧
fig.tight_layout()
fig.subplots_adjust(right=0.8)
ax.legend(loc='center left', bbox_to_anchor=(1.07, 0.5), fontsize=7)