2017-04-26 55 views
1

我希望能夠設置一種方法,可以將普通圖形(黑線,白色/透明背景)轉換爲僞反轉圖形(淺色線條,黑色/透明背景)。我只是後處理反轉圖像,但直接反轉的顏色看起來很糟糕,所以我想(嘗試)創建一個從一組顏色到另一個的映射,然後將其應用於已添加的所有藝術家到(所有的軸)在一個圖上。獲取圖上繪製的所有對象(藝術家)

有沒有辦法訪問已添加到圖形中的所有對象(例如文本,散佈圖,線條,標籤標籤等)?


編輯:我的動機是自動生成的白色背景和數字黑色背景的版本。 (例如)出版物(例如)需要白色背景數字,而對於演示文稿(即對話幻燈片),黑色背景數字可能更好。雖然它不會是很麻煩設置一個標誌,並根據它改變每種顏色,例如,

if dark: 
    col_line = 'cyan' 
    col_bg = 'black' 
else: 
    col_line = 'red' 
    col_bg = 'white' 

# ... plot ... 

這將是更涼爽,更方便(儘管開銷)做這樣的事情,

fig.savefig('dark.pdf') 
invert(fig) 
fig.savefig('light.pdf') 
+0

這聽起來有點像別的解決方法解決方案。如果你想要一個櫻桃蛋糕,你不會準備一個蘋果派,並交換所有的櫻桃蘋果;同樣在這裏:爲什麼不確保對象已經創建了正確的屬性? – ImportanceOfBeingErnest

+0

@ImportanceOfBeingErnest,因爲我想擁有這兩個版本的圖形,而不必手動重新繪製所有內容,根據需要更改參數(儘管這可能最終成爲最佳/最簡單的解決方案)。我在這個問題上添加了一些說明。 – DilithiumMatrix

回答

1

遞歸調用.get_children(),停止時返回的列表爲空。

+0

謝謝,你可以擴展一下嗎?即返回什麼類型的對象以及我可以做什麼? – DilithiumMatrix

+1

'.get_children()'是一種返回藝術家父母的所有藝術家的方法。例如。 'plt.gcf()。get_children()'返回軸和背景補丁; plt.gca()。get_children()返回軸的背景藝術家,脊椎藝術家,軸藝術家,x/y標籤藝術家,背景貼圖藝術家以及任何繪圖元素,如線條,標記,圖例(許多這些元素有自己的孩子是藝術家,例如一個傳說通常包含幾個藝術家)。 – Paul

1

您可以使用不同風格或根據需要更改現有樣式,而不是自己更改所有可能藝術家的所有屬性。

E.g.您可以從"dark_background"風格開始,然後使用rcParams調整一些其他參數。

import numpy as np 
import matplotlib.pyplot as plt 
plt.style.use("dark_background") 

style = {"lines.linewidth" : 2, 
     "axes.facecolor" : "#410448"} 
plt.rcParams.update(style) 

plt.plot(np.sin(np.linspace(0, 2 * np.pi))) 

plt.show() 

enter image description here

+0

我很欣賞你的建議,而且我沒有考慮過使用'style'功能;但我希望有一個不同的解決方案。 – DilithiumMatrix

相關問題