如何制作一个直方图,其中每个小节的中心位于一个公共轴上?这看起来像一个带有阶梯形边缘的小提琴剧情。对称,小提琴情节直方图?
我想在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