2015-12-10 58 views
1

總之整個區域隨機生成的觀察可視化,我正在尋找幫助創建中的情節的特定區域被指定到某個隨機分配觀察圖(誰擁有某種因素由顏色指定)。我更喜歡ggplot2或d3。創建具有在情節

我今天正在進行討論,試圖證明即使我們隨機選擇一個觀察,我們也許會選擇觀察興趣。換句話說,如果每個觀察,隨機分配到一個飛鏢盤的某一部分,我扔飛鏢,有機會,我的鏢會打的觀察,這將是感興趣

現在,我現在從字面上試圖創建這個飛鏢。

我一直插科打諢與GGPLOT2和我接近,我想,但沒有完全可視化。

首先,我嘗試使用geom_polar。我隨機生成每個觀察座標

df$Coord1 <- sample(50, size = nrow(df), replace = TRUE) 
df$Coord2 <- sample(50, size = nrow(df), replace = TRUE) 

然後繪製它們然而,這裏的問題是,沒有采取所有的陰謀面積。 (還有一些問題實際上是重疊的,所以如果有人也知道如何生成不會重疊的座標,那將會很好。)如果我要擲飛鏢,我可能不會進行觀察。下面是我使用的代碼:

dartboard <- ggplot(df, aes(Coord1, Coord2, fill = Classification)) + 
geom_tile()+coord_polar() 

Attempted Dartboard 1

所以,後來我在試着用餅圖。

pie <- ggplot(df, aes(x = factor(1), fill = factor(Classification))) + 
geom_bar(width = 1) + coord_polar() 

Attempt #2

這很好,因爲它是一個整圓,但分組的分類在一起的時候,我希望他們隨意散落的情節。

我也嘗試複製這個熱圖創建(http://www.r-bloggers.com/controlling-heatmap-colors-with-ggplot2/),但我不能完全弄清楚如何使它與我的數據正確匹配。

總之,我正在尋找幫助創建一個情節,其中一個特定區域的情節被指定給某個具有某種因素的觀察者。

任何想法?

更新1:

這段代碼是什麼我要找的視覺從概念層面(圖表的一部分被觀測覆蓋:

df <- expand.grid(x = 1:20, y = 1:20) 
samples <- c("one", "two", "three", "four", "five") 
df$series <- samples[runif(n = nrow(df), min=1,max=length(samples))] 
g <- ggplot(df, aes(fill=series, xmin = x, ymin = y, xmax = x+1, ymax = y+1)) 
g <- g + geom_rect() 
g <- g + coord_polar(theta="y") 
g <- g + theme(panel.grid=element_blank()) 
g <- g + theme(axis.text=element_blank()) 
g <- g + theme(axis.ticks=element_blank()) 
g 

Attempt 1

但現在,我試圖找出如何將其應用到具有約1500的觀察我自己的數據集。在圖片中的座標與expand.grid使用,所以現在我想弄清楚如何分配座標我擁有1,500個觀察點。

更新2:

我用下面的代碼取得了相對的成功。

Success

random <- expand.grid(x = 1:40, y = 1:39) 

random <- random %>% 
    mutate(ID = 1, 
     ID = cumsum(ID)) 

plot.data <- full_join(data, random, by = "ID") 

samples <- c("UI", "IN", "OW", "BE" , "Five") 
plot.data$Classification <- samples[runif(n = nrow(plot.data), min=1,max=length(samples))] 
g <- ggplot(plot.data, aes(fill=Classification, xmin = x, ymin = y, xmax = x+1, ymax = y+1)) 
g <- g + geom_rect() 
g <- g + coord_polar(theta="y") 
g <- g + theme(panel.grid=element_blank()) 
g <- g + theme(axis.text=element_blank()) 
g <- g + theme(axis.ticks=element_blank()) 
g <- g + scale_fill_manual(values=c("dark green", "orange" , "yellow" , "red" , "green")) 
g 

我用expand.grid功能指定座標的孩子。有些觀察因爲無法獲得座標而被排除在外,但沒關係。

我唯一擔心/抱怨現在是有些意見是較大的(因而更容易命中)比別人....所以我可能會檢查該熱圖路線。時間會證明。非常感謝您的幫助。

更新3:

另一個版本(也可能是最終形式):

Final form

這樣,每個觀察是大致相同的尺寸。

這個熱圖版本的基礎可以在這裏找到:http://www.r-bloggers.com/controlling-heatmap-colors-with-ggplot2/但這裏是我自己的代碼

ggplot(plot.data, aes(x = x, y = y, fill = factor(Classification))) + 
    geom_tile(color = "black") + 
    scale_fill_manual(values=c("dark green", "orange" , "yellow" , "red" , "green")) + 
    theme(legend.position="none") + 
    theme_change 
+0

你說「隨機分配」,而不指定的分佈。這太不精確了,有各種方法可以將樣本「隨機分配」到飛鏢上。 –

+0

還有我從你的照片,你的樣本空間是四個結果的空間推斷(「是」,「IN」,「OW」,「UI」),可反覆發生,但你實際上並沒有說什麼是(或向我們展示你的數據框'df'的樣子) –

+0

我沒有指定分佈,因爲我不想挑剔。使用你想要的任何發行版 - 我只是希望每個像素都包含一個觀察結果。就df而言,它本身只是兩個變量,即ID和分類。我剛剛生成了Coord1和Coord2變量,因爲我只是試圖隨機分配座標。 我的樣本有大約1,200個觀察值,每個觀測值都有4個分類中的1個(BE,OW,IN,UI)。 對不起,不清楚。 – Pete

回答

2

這個怎麼樣?

df <- expand.grid(x = 1:20, y = 1:20) 
samples <- c("one", "two", "three", "four", "five") 
df$series <- samples[runif(n = nrow(df), min=1,max=length(samples))] 
g <- ggplot(df, aes(fill=series, xmin = x, ymin = y, xmax = x+1, ymax = y+1)) 
g <- g + geom_rect() 
g <- g + coord_polar(theta="y") 
g <- g + theme(panel.grid=element_blank()) 
g <- g + theme(axis.text=element_blank()) 
g <- g + theme(axis.ticks=element_blank()) 
g 
+0

這是在餅圖的每一個點上創建一個觀察。我以爲他想要隨機創建觀察結果,並表明他可能會得到一個觀察結果。但我承認,他不清楚他想要什麼,可能就是這樣。 –

+0

這正是我從概念層面尋找的。我不再工作了,但是當我掌握了這些數據的時候,我會試着用我的1,200個觀測值來複制這個數據。 – Pete

+0

因此,這對於概念上的前沿起作用,但現在我試圖讓每個觀察都有一個獨特的x和y。這部分是棘手的,因爲我有一個特定的觀察,而expand.grid使400 obs之一。我有1500觀察。我可能只需要做expand.grid(1:38).... – Pete