r - 如何使用 R 中的网格图形绘制直方图?

标签 r r-grid

我想绘制一个类似于 beanplotviolin 的图,但我想绘制两个不同的分布,而不是对称形状的中心线。类似于本文 [pdf] 中的图 4 http://www.jstatsoft.org/v28/c01/paper .

我想在 R 中使用 grid 图形引擎。任何指针都会有用。我查看了 lattice 包和 lattice 包中的 histogram 函数,但这不是我想要做的。

感谢任何帮助/指点。

最佳答案

通过对 Sarkar 的 lattice 包中的函数 panel.violin 进行相当简单的修改,您可以相当轻松地获得半 fiddle 图。该函数中有四行可以在 grid.polygon 调用中更改,以将“双面”密度绘图更改为单面密度绘图。首先是require(lattice)require(grid)。然后键入 panel.violin。我将向您展示“水平”改变:

require(grid)
panel.violin2  <-  
    # snipped all the arguments and processing

       grid.polygon(x = c(dx.list[[i]] ), 
   # Notice I removed: ... ,rev(dx.list[[i]]) 
               y = c(2*dy.list[[i]]    ), default.units = "native", 
   # Removed: ...  , -rev(dy.list[[i]])
               name = trellis.grobname(identifier, type = "panel", 
                 group = group), gp = gpar(fill = col, col = border, 
                 lty = lty, lwd = lwd, alpha = alpha))

同时将其从 else{ ...} 子句的相应部分中删除。现在您可以使用帮助中的示例运行它(panel.violin)

bwplot(voice.part ~ height, singer,
       panel = function(..., box.ratio) {
           panel.violin2(..., col = "transparent",
                        varwidth = FALSE, box.ratio = box.ratio)
           panel.bwplot(..., fill = NULL, box.ratio = .1)
       } )

enter image description here

如果你想要另一边的密度,你需要做的就是删除 dx.list[[i]] 和 dy.list[[i]] 并留在 rev(dx .list[[i]])-rev(dy.list[[i]])

关于r - 如何使用 R 中的网格图形绘制直方图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13861854/

相关文章:

r - 将均值和 sd 的数据帧合并为一个数据帧,均值后的括号中为 sd

r - 如何在不考虑线尺寸的情况下保持线型间距恒定

r - 如何管理 gtable() 的 t、b、l、r 坐标以正确绘制次要 y 轴的标签和刻度线

r - 如何使用plot_grid在没有任何空间的情况下放置绘图?

R:选择不同的原始数据并分离到新的排名集

json - 如何将数据框转换为自定义 json 格式

r - naiveBayes 在使用非零拉普拉斯参数时给出意外结果(包 e1071)

r - 使用 aes_string 时,格式 geom_text 标签不起作用

r - 在r中的网格图中绘制色标

删除 ggplot 周围的彩色边框