混合 2D 和 3D 子图时,我无法去除过多的空白。对于纯 3D 子图,我可以调整正在绘制的区域fig.subplots_adjust()以去除空白,请参见此处。
但是,如果此 3D 图像位于 2D 子图中,则相同的技巧将不起作用。我创建了如下所示的混合子图:
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import axes3d
fig,axes = plt.subplots(2,2)
ax = axes.flat
for a in range(3):
ax[a].plot(range(10),range(10))
ax[3].remove()
ax[3] = fig.add_subplot(224,projection='3d')
X, Y, Z = axes3d.get_test_data(0.03)
ax[3].plot_surface(X, Y, Z, rstride=8, cstride=8, alpha=0.8,cmap=cm.coolwarm)
ax[3].set_xticklabels('')
ax[3].set_yticklabels('')
ax[3].set_zticklabels('')
fig.subplots_adjust(hspace=0,wspace=0)
Run Code Online (Sandbox Code Playgroud)
现在的伎俩,例如。fig.subplots_adjust(left=-0.01)将作用于 2D 子图的左边缘,并且不会修改 3D 子图。有没有办法完全去除 3D 子图周围的空白?我也试过更小ax.dist,如果 3D 绘图在 z 方向上更长,那就不好了。
我制作了一个有3种不同颜色的散点图,我希望匹配符号的颜色和图例中的文字.
对于线图的情况,存在一个很好的解决方案:
leg = ax.legend()
# change the font colors to match the line colors:
for line,text in zip(leg.get_lines(), leg.get_texts()):
text.set_color(line.get_color())
Run Code Online (Sandbox Code Playgroud)
但是,无法访问散点图颜色get_lines().对于3种颜色的情况,我认为我可以使用例如逐个手动设置文本颜色.text.set_color('r').但我很好奇它是否能像线条一样自动完成.谢谢!