2011-03-02 22 views
2
[email protected][Table[ 

(*colors, dont mind*) 
{ColorData["CMYKColors"][(a[[r, t]] - .000007)/(.0003 - 0.000007)], 

(*point size, dont mind*) 
PointSize[1/Sqrt[r]/10], 

(*Coordinates for your points "a" is your data matrix *) 
    Point[ 
     {(rr =Log[.025 + (.58 - .25)/64 r]) [email protected](tt = t 5 Degree), 
      rr [email protected]}] 
     } &@ 

(*values for the iteration*) 
, {r, 7, 64}, {t, 1, 72}], 1] 

(*Rotation, dont mind*) 
/. gg : Graphics[___] :> Rotate[gg, Pi/2] 
+0

對於Mma社區這裏:這是這一個的後續http://stackoverflow.com/questions/5161814/creating-spectral-heat-maps-or-intensity-maps-from-cdip-data-using-紅寶石。我現在無法完善它。 – 2011-03-02 17:51:06

回答

7

好吧,我會咬人的。首先,Mathematica允許通過several forms之一應用函數:標準格式 - f[x],前綴格式 - f @ x,後綴格式 - f // x和中綴格式 - x ~ f ~ y。 Belisarius的代碼使用標準和前綴形式。

那麼,讓我們先看看最外面的功能:Graphics @ x /. gg : Graphics[___]:> Rotate[gg,Pi/2],其中xFlatten裏的所有內容。實質上,這樣做是從x創建一個Graphics對象,並使用named patterngg : Graphics[___])將產生的Graphics對象旋轉90度。

現在,要創建一個Graphics對象,我們需要提供一堆原語,這是一個嵌套列表的形式,其中每個子列表都描述了一些元素。這通過Table命令完成,其格式爲:Table[ expr, iterators ]。迭代器可以有多種形式,但在這裏它們都有表格{var, min, max},並且由於它們缺少第4個術語,它們以整數步驟採用minmax之間的每個值。所以,我們的迭代器是{r, 7, 64}{t, 1, 72},並且expr是針對它們的每個值進行評估的。因爲,我們有兩個迭代器產生一個矩陣,這會混淆Graphics,所以我們使用Flatten[ Table[ ... ], 1]我們將矩陣的每個元素都放到一個簡單的列表中。

Table生成的每個元素很簡單:顏色(ColorData),磅值(PointSize)和點位置(Point)。所以,用Flatten,我們創建了以下內容:

Graphics[{{color, point size, point}, {color, point size, point}, ... }] 

顏色生成是從數據中提取,並假定該數據已被放入一個叫做a列表。 a的各個元素通過Part構造來訪問:[[]]。表面上,ColorData結構有點奇怪,但它可以被讀爲ColorData["CMYKColors"]返回一個ColorDataFunction,當提供0和1之間的值時,該結果會產生CMYK顏色值。這就是爲什麼來自a的數據按照原來的方式縮放的原因。

點的大小由徑向座標生成。您預期1/Sqrt[r]隨着r的增加,點的大小應該會變小,但Log會反轉比例。

同樣,點位置是從徑向和角度(t)變量產生的,但Point只接受它們的{x,y}形式,所以他需要將它們轉換。在從{r,t}{x,y}的轉換中出現兩個奇數構造:在計算x時,rrtt兩者都是Set=),允許在計算y時使用它們。另外,術語t 5 Degree讓Mathematica知道角度是度數而不是弧度。另外,正如所寫的那樣,有一個錯誤:緊隨關閉}後,&@不應該在那裏。

這有幫助嗎?

+0

設置這樣的變量(rr&tt)對我來說是新的!輝煌。在Sin之後點關閉,格式化雖然是狡猾的。 – Timo 2011-03-02 20:13:11

+0

@Timo,沒有看到右括號,更新了答案。但是,它仍然不應該有'&@'。像這樣使用'Set'是不常見的,但是完全合法,並且在使用之前設置變量。 – rcollyer 2011-03-02 20:20:24

+0

@Timo @rcollyer尼斯分析+1。 &@是以前版本的剩餘部分。請注意rr計算反轉極性r「軸」。這就是爲什麼你看到點數增加 – 2011-03-02 21:04:50