我經常在詞典列表中組織我的數據。下面的例子顯示了存儲兩種類型的線性圖,一種是二次型和一種線性型,每種都有不同的常量。我的數據組織方式目前可以很容易地繪製出改變每種類型圖類的常量的效果。然而,如果我想繪製一個固定常數的圖形類型的效果呢?換句話說,我會有4個數字,每行兩行。我必須對data
是如何組織的,因此不能重寫該數據結構的創建。任何想法爲乾淨pythonic方式做到這一點?繪製數據結構的內部或外部「循環」
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-1,1,20)
y1 = lambda x,c : x+c
y2 = lambda x,c : c*np.power(x,2)
y1(x,1)
y2(x,2)
# Create data structure
keys = ["quad", "lin"]
const = [1,2,3,4]
data = {}
for key in keys:
data[key] = []
for c in const:
graph = {}
graph["x"] = x
if key == "lin":
graph["y"] = y1(x,c)
if key == "quad":
graph["y"] = y2(x,c)
data[key].append(graph)
# Plots for same line type
for key,graphs in data.iteritems():
plt.figure()
for g in graphs:
plt.plot(g["x"],g["y"])
plt.show()
我要的是遍歷在外繪圖環路c
值,這樣的效果是:
# Plots for same constant
plt.figure()
plt.plot(data["quad"][0]['x'],data["quad"][0]['y'])
plt.plot(data["lin"][0]['x'],data["lin"][0]['y'])
plt.figure()
plt.plot(data["quad"][1]['x'],data["quad"][1]['y'])
plt.plot(data["lin"][1]['x'],data["lin"][1]['y'])
plt.figure()
plt.plot(data["quad"][2]['x'],data["quad"][2]['y'])
plt.plot(data["lin"][2]['x'],data["lin"][2]['y'])
plt.figure()
plt.plot(data["quad"][3]['x'],data["quad"][3]['y'])
plt.plot(data["lin"][3]['x'],data["lin"][3]['y'])
而是明確地寫了這一點,每個const
索引我想循環。
我曾嘗試更新預期的效果應該是什麼。謝謝。 – Jack