2015-05-31 36 views
11

這是我的目標:根據xz軸上繪製y的頻率。如何在R中製作3D直方圖

這是我的問題:我有兩列陣列(xy)和需要劃分x成類(p.ex. 0.2 OU 0.5)和計算的y頻率爲每個類的x。繪圖應該在「地面」計劃中顯示爲x-y繪圖,軸顯示爲z軸中的頻率。它可能像表面或3D直方圖。我試圖使用plot3D包的hist3D函數來實現它,但我不知道我在做什麼錯誤。

這是什麼,我試圖做一個例子:

https://www.safaribooksonline.com/library/view/r-data-visualization/9781783989508/ch06s05.html

謝謝!

+4

在該示例中的顏色反映在高度和是冗餘的。你可以做一個2d +的顏色熱圖並給出相同的信息,而不會遮蓋高欄後面的大量數據。 – thelatemail

+0

@thelatemail,感謝您的提示。我會嘗試熱圖。 –

回答

17

使用一些模擬數據,這應該讓你得到你想要的。關鍵是你必須創建你的二元倉,使用cut()函數完成。然後處理所述已像素合併因素,如水平,我們可以然後使用table()函數如下面計算每個因子水平的組合:

library(plot3D) 

## Simulate data: 
set.seed(2002) 
x <- rnorm(1000) 
y <- rnorm(1000) 

## Create cuts: 
x_c <- cut(x, 20) 
y_c <- cut(y, 20) 

## Calculate joint counts at cut levels: 
z <- table(x_c, y_c) 

## Plot as a 3D histogram: 
hist3D(z=z, border="black") 

## Plot as a 2D heatmap: 
image2D(z=z, border="black") 

3D2D

+0

謝謝,夥計。我在五月份的數據中使用了你的代碼,它工作得很好,但正如@thelatemail所說,也許熱圖是最好的選擇。 –

+1

在這種情況下,我肯定會同意。 :)我編輯我的答案文件,作爲一個選項: –

+0

@Forrens R.史蒂文斯,這種方式看起來好多了!分析新的情節我正在考慮一些有點不同的東西,也許你也可以幫助我: 我想爲每個'x'類的「獨立直方圖」繪製另一個繪圖。只是要說清楚:示例中每列的熱度應爲1.在這種情況下,比例尺中不會有超高的值,但更平滑的熱圖會從0變爲1. –