2013-03-13 194 views
0

我有一個Python函數,其參數爲SlopeDistance,它返回Cost。 坡度可以在1 - 80範圍內。 距離可以在1 - 20000範圍內。 成本可以是任何正數。顯示三個變量之間關係的Python圖形

我想查看斜率,距離和成本之間的關係。 什麼是最好的情節來顯示這三個變量之間的關係?我將如何創建它。 我想知道,例如,如果斜坡上升和下降,成本會怎樣? 如果坡度和距離增加,成本會發生什麼變化? 等等

def func(Slope, Distance): 
    ... 
    return cost 


SlopeList = list(xrange(81)) 
DistanceList = list(xrange(20000) 



myList= [] 
for Distance in DistanceList: 
    for Slope in SlopeList: 
     cost = func(Slope, Distance) 
     var = (Slope, Distance, Cost) 
     append.myList(var) 
+0

我建議您使用[NodeBox](http://nodebox.net/code/index.php/Home)。這是一個幾乎不爲人知的圖書館,專門從事這些事情。 **注意:**僅適用於Mac OSX。 – xxmbabanexx 2013-03-13 01:31:42

+0

所以......你想在三個變量(3D)上使用一個基於圖表*的*,還是使用*三個變量?在後面的情況下,這可能是http://stackoverflow.com/q/4555948/1993598 – xxmbabanexx 2013-03-13 01:36:33

+0

重複的問題不僅是如何顯示它,但更多如何計算函數,使結果取決於所有的變量都不是固定的。 – ustroetz 2013-03-13 04:51:36

回答

2

的問題是有點不清楚,所以我會盡量覆蓋所有的可能性:

a)如果你有兩個變量的函數,如func,和你可以對這兩個變量的許多組合執行該功能,可以使用matplotlib分別在x軸和y軸上繪製等高線圖(可能爲)斜率和距離,Cost顯示爲等值線。一個例子見here

b)如果你有一個函數,例如:

Cost = func(Slope,Distance) 

...你知道成本和另外兩個變量之一的值,那麼你既可以:

B1)寫兩個功能(例如funcSlope(Cost,Distance)funcDistance(Slope,Cost)),從已知的變量產生了未知的變數,或

B2)如果兩個功能func是不和你在一起,所以你不知道它是怎麼做計算和TH因此無法明確地寫出我爲選項1建議的功能,或者很難以分析方式反轉func以找到其他兩個變量的斜率或距離,您可以使用類似下面的代碼以數字方式找到未知變量:

def func(Slope,Distance): 
    # Imagine that we didn't know the definition of this function 
    # so we couldn't write funcSlope() explicitly 
    return Slope * Distance**0.1234 

def funcSlope(Cost,Distance,minSlope,maxSlope): 
    def fs (Slope): 
     return Cost - func(Slope,Distance) 
    return scipy.optimize.brentq(fs, minSlope, maxSlope) 

print (func(2,6)) 
print (funcSlope(2.4949,6,0,10)) 

...爲其輸出是:

2.494904118641096 
1.999996698357211 

你會看到,你需要調用brentq()當未知變量指定範圍。

+0

謝謝Simon給你詳細的回答!我編輯了我的帖子,稍微澄清了一些我正在尋找的東西。我想我正在尋找像你在a)中解決的解決方案。我會研究等值線圖。不幸的是,我不確定我究竟需要什麼才能看到這三個變量之間的關係。 – ustroetz 2013-03-13 18:01:22

相關問題