我有一個由以下代碼生成的簡單基礎圖:
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [1, 2, 3], label="basic plot")
此外,我還有幾個額外的圖,我希望將它們中的每一個都繪制在上面的基本圖上,但要分開繪制。例如,如果我將上面的情節稱為“基本情節”,并且我還有情節“additional_1”和“additional_2”,那么我想得到兩個最終情節:
- 基本情節 附加_1
- 基本情節 additional_2
我當然可以完成第一個情節(1.),然后重新生成“基本情節”,并在上面繪制“additional_2”,但由于“基本情節”的創建比描述的示例更復雜,我想避免它,也就是說,我不想多次創建基礎圖。
有沒有辦法繪制基本圖,然后將其“復制”到多個無花果,并在每個無花果上分別繪制額外的無花果?有沒有其他方法可以達到同樣的效果?如果沒有,是否可以“撤消”最后一個(additional_1)圖,并改為繪制另一個(additional_2)(在保存或顯示無花果之后)?
這是附加圖的一些玩具代碼:(我不希望它們被繪制在一起)
plt.plot([1.5, 2, 2.5], [0, 5, 2], label="additional_1")
plt.plot([2, 2.5, 3], [6, 0, 3], label="additional_2")
謝謝
uj5u.com熱心網友回復:
- 這個問題很老了(3年),提供的解決方法(使用pickle)現在可能有一個更好的正式解決方案(或沒有?)
我不知道有一種更新的方法可以做到這一點。
- 該解決方案涉及洗掉斧頭,而我正在嘗試撤消對它的繪圖操作
BigBen的鏈接涉及到點擊事件,但是pickling的大致思路是一樣的。
如果稍后您想與 結合basic_plot,請additional_2沖洗并重復:
fig2 = pickle.load(open('basic_plot.pkl', 'rb'))
fig2.axes[0].plot([2, 2.5, 3], [6, 0, 3], 'r--', label='additional_2')
fig2.legend()

uj5u.com熱心網友回復:
Plot回傳 Line2D 物件的串列。您可以訪問物件屬性,特別是它的 x 和 y 坐標,并在另一個圖中使用它們,如下所示:
fig, ax = plt.subplots(1,2)
L1 = ax[0].plot([1, 2, 3], [1, 2, 3], label="basic plot")
ax[0].plot([1.5, 2, 2.5], [0, 5, 2], label="additional1")
ax[0].legend()
ax[1].plot(L1[0].get_xdata(), L1[0].get_ydata(), label="basic plot")
ax[1].plot([2, 2.5, 3], [6, 0, 3], label="additional2")
ax[1].legend()
plt.show()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/438498.html
標籤:Python matplotlib
上一篇:子圖子圖
下一篇:從資料框中繪制線
