2013-05-06 94 views
4

我想用匯總數據創建小提琴劇情。我的數據有一個類別,值coloumn和計數coloumn:彙總值的小提琴劇情(geom_violin)

data <- data.frame(category = rep(LETTERS[1:3],3), 
        value = c(1,1,1,2,2,2,3,3,3), 
        count = c(3,2,1,1,2,3,2,1,3)) 

如果我創建一個簡單的小提琴的情節,它看起來像這樣:

plot <- ggplot(data, aes(x = category, y = value)) + geom_violin() 
plot 

http://www.ahschulz.de/pub/overflow/violin_plot.png

那不是我通緝。解決方案是通過乘以每個類別 - 值組合的行來重塑數據幀。問題是,我的數量上升到數百萬,需要數小時來繪製! :-(

是否與我的數據的解決方案提前

感謝

回答

6

計算領域時,您可以提交一個權重。

plot2 <- ggplot(data, aes(x = category, y = value, weight = count)) + geom_violin() 
plot2 

您會收到警告消息,權重不會添加到一個,但沒關係。見here for similar/related discussion

enter image description here

+0

這似乎給不準確的密度。當我使用這種方法進行繪圖並與整個數據集進行繪圖比較時,繪圖看起來非常不同 – 2017-06-28 19:37:07

2

使用stat="identity"並指定violinwidth審美似乎工作,雖然我不得不把在矇混因素:?!

ggplot(data, aes(x = category, y = value)) + 
    geom_violin(stat="identity",aes(violinwidth=0.2*count)) 
+0

整潔的解決方案,這似乎不計算KDE可言,只是連接數(與矇混因素給予一定的gurth?)這可能在某些情況下是可取的。 – 2013-05-06 12:39:52

+0

是的。我認爲你的解決方案是OP實際需要的。 – 2013-05-06 13:05:46

+0

ggplot的新版本是否有類似的解決方案?如果我在版本2.1.0中使用這個代碼,我會得到'Error:Unknown parameters:trim,scale'。 – M4RT1NK4 2016-05-31 15:14:23