我必須調整哪些旋鈕來防止這些問題:
- 重疊軸標簽
- 帶有裁剪軸標簽的重疊圖
我正在使用帶有 PGF 后端的 matplotlib 3.5.1。舊版本的某些解決方案不再有效。

fig, axes = plt.subplots\
(2, 3, constrained_layout=True, subplot_kw=dict(projection="3d"))
#it = np.nditer(axes, flags=["refs_ok","multi_index"])
#for ax in it:
# # Plot the surfaces, add row and column title annotations.
# pass
width = 150 * 0.8 * mm
height = width * 0.65
fig.set_size_inches(width, height)
fig.savefig("something.pgf", dpi=300)
plt.close(fig)
uj5u.com熱心網友回復:
擺脫受限布局并使用plt.subplots_adjust(wspace=<value>, hspace=<value>)對我有用
from matplotlib import pyplot as plt
fig, axes = plt.subplots(nrows=2, ncols=3, subplot_kw=dict(projection="3d"))
plt.subplots_adjust(wspace=0.5,hspace=0.5)
labels_x, labels_y, labels_z = [['x-axis']*3]*2, [['y-axis']*3]*2, [['z-axis']*3]*2
for i in range(len(axes)):
for j in range(len(axes[i])):
axes[i,j].set_xlabel(labels_x[i][j])
axes[i,j].set_ylabel(labels_y[i][j])
axes[i,j].set_zlabel(labels_z[i][j])
plt.show()

uj5u.com熱心網友回復:
雖然緊湊布局和約束布局都可以與 3d 投影 (mplot3d) 一起使用,但約束布局似乎不了解如何填充 3d 刻度標簽,從而導致標簽重疊或修剪。兩個布局管理器都在給定固定圖形大小的情況下調整子圖填充和軸大小。兩者都不能使圖形大小適合內容。要在緊湊布局中執行此操作,請通過多次迭代從當前圖形緊湊 bbox 推斷所需的圖形大小。使用約束布局管理器時,將軸緊密 bbox 和填充相加以確定任何無關空間。緊湊的布局調整 subplotpars(軸大小和圖形填充)并支持“h_pad”和“w_pad”引數。約束布局調整軸大小并支持“wspace”、“hspace”、“w_pad”和“h_pad”引數。緊湊的布局將子圖壓縮成一個緊湊的組,然后在可用空間中居中。受約束的布局在所有可用空間中均勻分布子圖。無論布局管理器如何,如果刻度重疊或聚集得太緊,請將刻度定位器切換到“MaxNLocator”以獲得較小的“n”。
根本問題是 3d 投影刻度標簽在畫滿畫布之前是空的。受約束的布局管理器執行的“_draw_disabled”繪制不足以觸發刻度標簽。如果您跟蹤軸緊密的 bbox,您會注意到它們直到呼叫“fig.canvas.draw”之后才包含標簽,在此之前,刻度標簽只是“Text(0, 0, '')”。請務必在調整圖形大小后包含此呼叫,然后布局將按預期受到約束。給定一個固定的圖形寬度,根據美學設定高度或將軸緊 bbox 與填充相加以確定可能的最小高度。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/473869.html
標籤:matplotlib 约束 填充 重叠 mplot3d
上一篇:pyplot.scatter()繪制點但沒有有意義的軸?
下一篇:如何防止pip自動安裝支持包?
