簡體   English   中英

Matplotlib“ savefig”為pdf,文本覆蓋

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM