小编Phy*_*nmi的帖子

matplotlib:删除混合 2D/3D 子图中的 3D 绘图的空白

混合 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 方向上更长,那就不好了。

在此处输入图片说明

python matplotlib mplot3d

6
推荐指数
1
解决办法
2017
查看次数

matplotlib:将图例文本颜色与散点图中的符号匹配

我制作了一个有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').但我很好奇它是否能像线条一样自动完成.谢谢!

python matplotlib legend

5
推荐指数
2
解决办法
2919
查看次数

标签 统计

matplotlib ×2

python ×2

legend ×1

mplot3d ×1