我想调整图例的大小,以便可以在图例中看到不同类型的线,还可以更改点的形状,以便每个圆柱组有不同的点形状。
Plot2WayANOVA函数具有用于传递ggplot2参数的参数,但也许仅用于更改主题的组件?另外,有一个保存图的选项,但是它将图另存为png,当我将图分配为对象并打印时,仅显示文本。
library(CGPfunctions)
Plot2WayANOVA(formula = mpg ~ am * cyl, dataframe = mtcars)
更新:运行以下数据时出现错误。
d <- structure(list(Wave = c(1, 2, 3, 4, 3, 1, 2, 3, 4, 1, 2, 3, 4,
1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1,
2, 3, 4, 1, 2, 3, 1, 2, 3, 4, 3, 4, 1, 3, 4, 1, 2, 3, 4, 1, 2,
3, 4, 1, 3, 4, 1, 2, 3, 4, 1, 4, 1, 1, 2, 3, 1, 2, 3, 4, 1, 2,
3, 1, 1, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 2, 4, 1, 2, 3, 4, 1, 2,
3, 4, 1), CigAd = c(1, 0, 4, 1, 15, 8, 4, 1, 2, 36, 17, 14, 16,
21, 16, 34, 29, 30, 17, 32, 24, 23, 5, 15, 17, 26, 26, 29, 12,
22, 30, 30, 37, 25, 0, 25, 22, 22, 22, 30, 21, 29, 36, 37, 14,
23, 0, 0, 0, 0, 0, 0, 0, 0, 17, 15, 34, 0, 0, 0, 13, 15, 24,
19, 18, 25, 40, 4, 0, 3, 1, 0, 0, 10, 18, 16, 18, 29, 1, 15,
14, 30, 21, 22, 27, 26, 28, 28, 24, 4, 5, 0, 0, 5, 0, 9, 4, 17,
16, 26), storetype = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L,
2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L), .Label = c("1",
"2", "3"), class = "factor")), row.names = c(NA, 100L), class = "data.frame")
谢谢!
这里的问题Plot2WayANOVA
是一个包装函数,ggplot
该函数试图通过处理创建适当的ggplot以便可视化数据的许多技术方面来简化ANOVA的绘制。尽管这种功能对于学习者或数据的快速可视化来说都是不错的,但它并不能使您以所需的方式自定义绘图。
函数本身不存在执行您要求的所有操作的选项。你可以通过额外的geom
呼叫和scale
通话以及theme
通话,但困难是造型美观的点没有被映射。它是可以添加一个theme
加宽的传说关键,但是当你这样做你会发现,对于errobars行也包含在传说为细实线覆盖了厚厚的图案线条,它看起来凌乱,再不能改变通过功能参数。
因此,您有两种选择:
ggplot
直接使用自己构建图:问题在于,将所有相关的模型摘要信息放入标题下方的标题将是一件痛苦的事情,当然会打败Plot2WayANOVA
最初的拥有点Plot2WayANOVA
:这样做的问题是,Plot2WayANOVA
实际上并没有返回ggplot对象。它仅打印ggplot,然后返回有关分析的漂亮信息大列表。您将需要修改该函数以使其返回ggplot对象。我将在此处演示如何进行第二种方法。与从头开始构建相比,它所需的代码要少一些,但在技术和难度上也要高一些。
首先,编写一个新版本,Plot2WayANOVA
该版本返回ggplot而不是summary对象:
f <- CGPfunctions::Plot2WayANOVA
body(f)[[84]] <- quote(return(p))
My_Plot2WayANOVA <- f
现在,我们可以通过执行以下操作获取ggplot对象:
p <- My_Plot2WayANOVA(formula = mpg ~ am * cyl, dataframe = mtcars)
我们将需要修改美学映射,以使其表现出所需的效果,并覆盖,geom_errorbar
以确保其具有空白键字形:
p$layers[[3]]$aes_params$shape <- NULL
p$layers[[3]]$aes_params$colour <- NULL
p$layers[[3]]$geom_params$colour <- NULL
p$layers[[3]]$geom_params$shape <- NULL
p$layers[[3]]$mapping <- aes(color = cyl, fill = cyl)
p$mapping <- aes(colour = cyl, shape = cyl,
fill = cyl, group = cyl,
x = am, y = TheMean)
p$layers[[1]] <- geom_errorbar(aes(ymin = LowerBound, ymax = UpperBound),
size = 1, width = 0.1, key_glyph = "blank")
现在p
是一个ggplot对象,您可以根据需要添加自定义比例和主题:
p + scale_shape_manual(values = c(21:23), name = "cyl") +
theme(legend.key.width = unit(75, "points"))
是否值得所有这些麻烦值得商bat;如果您真的发现原始样式不可接受,那么从头开始构建图可能会更容易,更安全。
编辑
这是一个将数据添加到问题中的工作示例:
p <- My_Plot2WayANOVA(formula = CigAd ~ Wave * storetype, dataframe = d)
p$layers[[3]]$aes_params$shape <- NULL
p$layers[[3]]$aes_params$colour <- NULL
p$layers[[3]]$geom_params$colour <- NULL
p$layers[[3]]$geom_params$shape <- NULL
p$layers[[3]]$mapping <- aes(color = storetype, fill = storetype)
p$mapping <- aes(colour = storetype, shape = storetype,
fill = storetype, group = storetype,
x = Wave, y = TheMean)
p$layers[[1]] <- geom_errorbar(aes(ymin = LowerBound, ymax = UpperBound),
size = 1, width = 0.1, key_glyph = "blank")
p + scale_shape_manual(values = c(21:23), name = "storetype") +
theme(legend.key.width = unit(75, "points"))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句