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
Expected graph 我没有收集所有数据,因此我将添加更多EXP和CTRL数据点,然后尝试获取错误栏。我只是想看看是否可以使用到目前为止的数据生成图形。
答案 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")
上面,您可以看到我依靠ggplot
进行数据处理-计算误差线的平均值和间隔。通常,我建议反对,我宁愿使用dplyr
或data.table
进行那些计算,这样绘图代码会更简单。如果您创建具有列y
,ymin
和ymax
的数据框(除了genotype
,variable
和value
列以外-那么您只需使用geom_bar
和geom_errorbar
就可以避免所有stat_summary
的麻烦。
如评论中所述,在进行任何绘图或计算之前,您还需要确保数据为所有适当的类型-数字数据应为numeric
,而不是character
。< / p>