內的功能我有有許多繪圖函數的類。我的意圖是用matplotlib的子圖方法將所有圖形組合在一個圖像中,具體取決於我調用的函數。增加計數器每次我調用類
我試着像下面這樣(這是我的計劃的一個短版),但我不知道爲什麼不工作。
任何幫助表示讚賞。提前致謝。
import itertools
import numpy as np
from matplotlib import pyplot as plt
class Base(object):
def __init__(self, a, multiPlot=True, numColGraph=None, numRowGraph=None,
figSize=None, DPI=None, num=None):
self.a = a
self.x = np.linspace(0, 5)
if multiPlot:
self.nCG = numColGraph
self.nRG = numRowGraph
else:
self.nCG = 1
self.nRG = 1
if figSize and DPI:
self.thePlot = plt.figure(figsize=figSize, dpi=DPI)
if num == 0:
self.plotId = itertools.count(1)
def createPlot1(self):
y = self.x**(a/2)
self.thePlot.add_subplot(self.nRG, self.nCG, next(self.plotId))
plt.plot(self.x, y, label=str(self.a)+'/2')
def createPlot2(self):
y = self.x**a
self.thePlot.add_subplot(self.nRG, self.nCG, next(self.plotId))
plt.plot(self.x, y, label=self.a)
def createPlot3(self):
y = self.x**(2*a)
self.thePlot.add_subplot(self.nRG, self.nCG, next(self.plotId))
plt.plot(self.x, y, label=str(self.a)+'*2')
if __name__ == "__main__":
A = np.linspace(0, 2, 5)
for i, a in enumerate(A):
Instance = Base(a, numColGraph=3, numRowGraph=len(A),
figSize=(12,10), DPI=100, num=i)
Instance.createPlot1()
Instance.createPlot2()
Instance.createPlot3()
plt.show()
當你說「它不工作」時,你能更具體地說明你期望的工作以及相反的結果嗎? – SethMMorton 2013-04-23 23:48:34
好了,首先,我得到以下錯誤:「基地」對象有沒有屬性「plotId」,但我已經decleared它。我想在循環之後得到同一圖中的三個圖(圖,無論你怎麼稱呼它)。我遇到的問題是每次調用函數時增加plotId變量。對不起,如果我不讓自己清楚,英語不是我的母語。 – ezitoc 2013-04-24 00:34:29
我懷疑你可能正在錯誤地使用你的'plotId'變量。 它只是變得設置'如果num == 0',但你(從歷數)實例'Base'對象0一次,不再。後 – bbayles 2013-04-24 01:22:58