ggplot2条形图,带有2组和3个变量-使用误差线

时间:2018-10-02 18:02:50

标签: r ggplot2 bar-chart

MediaType.APPLICATION_FORM_URLENCODED

我想要一个条形图-带有误差线
X轴有两组=平均值(EXP)vs平均值(ctrl)
y轴针对3列(@RestController @RequestMapping("/api") public class CustomerController { @Inject protected RegistrationService registrationService; @PostMapping(path = "/registration", consumes = MediaType.APPLICATION_FORM_URLENCODED) public String register(@RequestBody RegistrationRequest registrationRequest) { return this.registrationService.register(registrationRequest); } } DATA1Chamber A tibble: 4 x 4 genotype NovelMouseChamber CChamber NovelObjectChamber <chr> <chr> <chr> <chr> 1 EXP 457.457 54.4878 87.0871 2 ctrl 129.596 146.413 323.023 3 ctrl 306.306 73.7404 218.952 4 ctrl 369.603 117.518 111.912 NovelMouseChamber)绘制

试图使此示例失败 使用以下修改:

CChamber

使用以下方式绘制:

NovelObjectChamber

enter image description here

Expected graph 我没有收集所有数据,因此我将添加更多EXP和CTRL数据点,然后尝试获取错误栏。我只是想看看是否可以使用到目前为止的数据生成图形。

1 个答案:

答案 0 :(得分:1)

这应该使您入门,并提供一个良好的框架。

df = read.table(text = "genotype NovelMouseChamber CChamber NovelObjectChamber
1 EXP      457.457              54.4878     87.0871              
2 ctrl     129.596              146.413     323.023              
3 ctrl     306.306              73.7404     218.952              
4 ctrl     369.603              117.518     111.912", header = T)

dfm = reshape2::melt(df, id.vars = "genotype")

ggplot(dfm, aes(x = genotype, fill = variable, color = variable, y = value)) +
  stat_summary(geom = "bar", fun.y = mean, position = "dodge") +
  stat_summary(geom = "errorbar",
               fun.ymin = function(y) mean(y) - 1.96 * sd(y),
               fun.y = function(y) mean(y),
               fun.ymax = function(y) mean(y) + 1.96 * sd(y),
               position = position_dodge(width = 0.9),
               width = 0.3, color = "black")

enter image description here

上面,您可以看到我依靠ggplot进行数据处理-计算误差线的平均值和间隔。通常,我建议反对,我宁愿使用dplyrdata.table进行那些计算,这样绘图代码会更简单。如果您创建具有列yyminymax的数据框(除了genotypevariablevalue列以外-那么您只需使用geom_bargeom_errorbar就可以避免所有stat_summary的麻烦。

如评论中所述,在进行任何绘图或计算之前,您还需要确保数据为所有适当的类型-数字数据应为numeric,而不是character。< / p>