[英]Matplotlib “savefig” as pdf, text overlay
如果我在python中運行此代碼:
titles = ctf01[0,1:]
fig = plt.figure(figsize=(11.69,8.27), dpi=100)
for num in range(len(titles)):
ax = fig.add_subplot(3,4,num+1)
ax.plot(ctf03[1:,num+1], ctf0102[:,num], 'ro')
ax.set_title(titles[num])
plt.tight_layout()
fig.text(0.5, 0.04, 'CTF12', ha='center')
fig.text(0.04, 0.5, 'CTF3', va='center', rotation='vertical')
fig.savefig("example.pdf")
我在pdf文件中得到這個:
我想用紅色圓圈中顯示的“圖形標題”解決此問題。 如果我將0.04值設置為負值,則標題用完紙。
我還想通過將子圖的標題(綠色圓圈)移到圖中來節省一些空間。 任何想法我怎么能意識到這一點?
感謝幫助。
嘗試在以下行之前在fig.savefig("example.pdf")
之前添加。
plt.tight_layout()
您在腳本中有它,但是它應該在文本之后
似乎您正在嘗試為整個圖形設置x和y標簽,這是不可能的,因為它們只能在Axes
對象上設置。 幸運的是,我們可以通過創建一個“不可見”子圖來解決該問題,該子圖填充整個區域並在其上設置標簽。
繪制子圖后,您可以使用以下方法創建不可見的圖:
label_ax = fig.add_subplot(111, frameon=False)
frameon
參數可防止其繪制默認樣式添加的框。 然后,您告訴它不要繪制刻度線並使刻度線標簽不可見(我們不能只是刪除它們,因為這樣會弄亂間距)。
label_ax.tick_params(bottom=False, left=False, labelcolor="none")
最后,設置標簽:
label_ax.set_xlabel("CTF12")
label_ax.set_ylabel("CTF3")
您可以通過為set_title
函數提供pad
參數來調整圖標題的垂直位置。 賦予負值會將標題推入情節,您需要反復試驗才能找到有效的值。
全部放在一起(與虛構數據一起):
fig = plt.figure(figsize=(11.69, 8.27), dpi=100)
for i in range(10):
ax = fig.add_subplot(3, 4, i + 1)
ax.plot([1, 2, 3, 4, 5], "ro")
ax.set_title("Plot {}".format(i), pad=-15)
label_ax = fig.add_subplot(111, frameon=False)
label_ax.tick_params(bottom=False, left=False, labelcolor="none")
label_ax.grid(False) # In case the current style displays a grid.
label_ax.set_xlabel("CTF12")
label_ax.set_ylabel("CTF3")
fig.tight_layout()
fig.savefig("example.pdf")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.