如何製作一個直方圖,其中每個小節的中心位於一個公共軸上?這看起來像一個帶有階梯形邊緣的小提琴劇情。對稱,小提琴情節直方圖?
我想在Lattice中做到這一點,並不介意自定義面板函數等,但會很樂意使用基礎R圖形甚至ggplot2。 (我還沒有把自己投入到ggplot2中,但會在某些時候冒險)
(爲什麼我要這樣做?我認爲這可能是一個有用的替代小提琴情節,當數據是離散的併發生在幾個[5-50]均勻間隔的數值上,每個bin代表一個點,當然,我可以生成一個正常的直方圖,但我認爲有時顯示box-and-whisker小提琴情節和小提琴情節對於有規律間隔的離散數據,一個與盒狀圖方向相同的對稱直方圖允許比較數據的詳細結構和盒狀圖,就像小提琴情節一樣,在這種情況下,對稱直方圖可以比小提琴的情節更具信息性(一個beanplot可能是我剛剛描述的另一種選擇,儘管事實上我的數據並不是字面上的離散 - 它只是收斂到一系列的正常值。這使得R的beanplot軟件包對我來說用處不大,除非我通過將值映射到最接近的常規值來規範化值。))基於模擬:
df30 <- data.frame(crime.v=c(0.2069526, 0.2063516, 0.06919754,
0.2080366, -0.06975912, 0.206277, 0.3457634, 0.2058985, 0.3428499,
0.3428159, 0.06746109, -0.07068694, 0.4826098, -0.06910966, 0.06769761,
0.2098732, 0.3482267, 0.3483602, 0.4829777, 0.06844112, 0.2093492,
0.4845478, 0.2093505, 0.3482845, 0.3459249, 0.2106339, 0.2098397,
0.4844956, 0.2108985, 0.2107984), bias=c("beast", "beast", "beast",
"beast", "beast", "beast", "beast", "beast", "beast", "beast", "beast",
"beast", "beast", "beast", "beast", "virus", "virus", "virus", "virus",
"virus", "virus", "virus", "virus", "virus", "virus", "virus", "virus",
"virus", "virus", "virus"))
命名df
在一個RDATA文件全套600個觀察一個數據幀可以從這個鏈接下載:CVexample.rdata。
的crime.v
值都接近以下情況之一,我稱之爲焦點:
[1] -0.89115386 -0.75346155 -0.61576924 -0.47807693 -0.34038463 -0.20269232 -0.06500001
[8] 0.07269230 0.21038460 0.34807691 0.48576922 0.62346153 0.76115383 0.89884614
(該crime.v
值實際上是13個指標,其值的範圍從-1到1之間的平均值,但最終收斂於0.9或-9附近的值,在.9或-.9附近的13個值的平均值稍微接近焦點,實際上我通過檢查焦點來確定焦點的適當值數據,因爲涉及到一些額外的變化。)
小提琴情節可以用:
require(lattice)
bwplot(crime.v ~ bias, data=df30, ylim=c(-1,1), panel=panel.violin)
如果使用較大的數據集運行此操作,則會看到其中一個小提琴繪圖是多模式的,而另一個則不是。但是,這似乎並不反映兩個小提琴劇情的數據差異;據我所知,這是由於焦點相對於情節的位置而造成的一種人爲因素。我可以通過調整傳遞給panel.violin的density
的參數來平滑差異,但只需表示每個羣集中有多少個點就會更清楚。
謝謝!
您是否嘗試過用起這個和操作,以滿足您的需求? http://docs.ggplot2.org/0.9.3/geom_violin.html – 2013-04-06 04:13:11
不,但是非常感謝你提供的信息豐富的頁面。我可以嘗試。 (看起來像ggplot文檔比格式文檔更容易使用 - 這不是對格的批評。) – Mars 2013-04-06 04:28:41
對於這種情況,示例數據將非常有用。聽起來很有趣。 – Henrik 2013-04-06 08:33:40