- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在代码的最后一行强制使用 +facet_grid(.~sample,scales = "free_x")
进行分面,但结果看起来很不美观(参见图 2)(在我的愚见)。我想知道是否有一种方法可以为 geom_histogram 的每个条形强制一个特定的大小,这样无论组是否平衡,条形在组之间看起来都一样。
谢谢,薇薇安
示例数据:
samplenote prod N mean sd se sampleprod sample
Sample A PRODUCT A 3 0.562103162 0.120039901 0.069305069 Sample A PRODUCT A Sample A
Sample A PRODUCT B 3 0.516322045 0.039250354 0.022661203 Sample A PRODUCT B Sample A
Sample B PRODUCT A 3 0.504789098 0.055005623 0.031757511 Sample B PRODUCT A Sample B
Sample B PRODUCT B 3 0.564334594 0.035685751 0.020603178 Sample B PRODUCT B Sample B
Sample C PRODUCT A 3 0.337747481 0.042670562 0.024635861 Sample C PRODUCT A Sample C
Sample C PRODUCT B 3 0.470207809 0.012102641 0.006987463 Sample C PRODUCT B Sample C
Sample C group1 PRODUCT A 3 0.666033925 0 0 Sample C group1 PRODUCT A Sample C
Sample C group1 PRODUCT B 3 0.775242276 0.017019353 0.009826128 Sample C group1 PRODUCT B Sample C
Sample C group2 PRODUCT A 3 0.53594287 0.062336653 0.035990084 Sample C group2 PRODUCT A Sample C
Sample C group2 PRODUCT B 3 0.4705616 0.009122911 0.005267115 Sample C group2 PRODUCT B Sample C
示例图 1:
ggplot(data=test.df,aes(x=samplenote,y=mean,fill=prod))+
geom_bar(stat="identity",col="black",size = 0.4,position='dodge')+
scale_fill_manual(values=c("#B50000","#0039e6"))+
geom_errorbar(data=test.df,aes(x=samplenote,ymax=mean+sd,ymin=mean,width=.2),position=position_dodge(.9),colour="black",size = 0.4)+
theme_classic()+
theme(axis.text=element_text(colour="black"))+
theme(axis.ticks=element_line(colour="black"))+
coord_cartesian(ylim=c(0,1.13),expand = TRUE)+
scale_y_continuous(expand=c(0,0),breaks=c(0,0.25,0.5,0.75,1))+
ylab("g/g prod")+
xlab("")+
theme(legend.title=element_blank())+
theme(axis.line=element_line(size=0.4))
编辑
Brian 给出的解决方案:
ggplot(data=test.df,aes(x=samplenote,y=mean,fill=prod))+
geom_bar(stat="identity",col="black",size = 0.4,position='dodge')+
scale_fill_manual(values=c("#B50000","#0039e6"))+
geom_errorbar(data=test.df,aes(x=samplenote,ymax=mean+sd,ymin=mean,width=.2),position=position_dodge(.9),colour="black",size = 0.4)+
theme_classic()+
theme(axis.text=element_text(colour="black"))+
theme(axis.ticks=element_line(colour="black"))+
coord_cartesian(ylim=c(0,1.13),expand = TRUE)+
scale_y_continuous(expand=c(0,0),breaks=c(0,0.25,0.5,0.75,1))+
ylab("g/g prod")+
xlab("")+
theme(legend.title=element_blank())+
theme(axis.line=element_line(size=0.4))+facet_grid(.~sample,scales = "free_x",space="free_x")
最佳答案
您需要使用 + facet_grid(~ sample, scales = "free_x", space = "free_x")
。 space
参数调整面的大小,使条形宽度保持一致(或更准确地说,使 X 轴上刻度之间的空间保持一致)。
require(dplyr)
data_frame(x = c("a", "a", "b", "b", "c", "c"),
y = runif(length(x)),
sample = rep(c("A", "B"), 3),
grouping = c(1, 1, 1, 1, 2, 2)) %>%
ggplot(aes(x, y, fill = sample)) + geom_bar(stat = "identity", position = "dodge") +
facet_grid(~grouping, space = "free_x", scales = "free_x")
有时您可能会发现您丢失了数据,这会再次导致不平衡条:
data_frame(x = c("a", "a", "b", "b", "c", "c"),
y = runif(length(x)),
sample = rep(c("A", "B"), 3),
grouping = c(1, 1, 1, 2, 2, 2)) %>%
ggplot(aes(x, y, fill = sample)) + geom_bar(stat = "identity", position = "dodge") +
facet_grid(~grouping, space = "free_x", scales = "free_x")
解决方法是 tidyr
包,它允许您包含明确的 NA
值,这会为缺少的栏留出空间。
data_frame(x = c("a", "a", "b", "b", "c", "c"),
y = runif(length(x)),
sample = rep(c("A", "B"), 3),
grouping = c(1, 1, 1, 2, 2, 2)) %>%
group_by(grouping) %>%
tidyr::complete(crossing(sample, x)) %>%
ggplot(aes(x, y, fill = sample)) + geom_bar(stat = "identity", position = "dodge") +
facet_grid(~grouping, space = "free_x", scales = "free_x")
关于R/ggplot 2 - 使用 Facet_grid 和 geom histogram/errorbar 处理不均匀的组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43901890/
我需要在半径R的圆内生成一个均匀随机点。 我意识到,通过在区间 [0 ... 2π) 中选择均匀随机的角度,并在区间 (0 ... R) 中选择均匀随机的半径,我最终会得到更多的点朝向中心,因为对于两
我想在一个正方形内生成 N 个点(均匀地)。我怎样才能做到这一点? 最佳答案 非常酷的问题,比我想象的要困难得多,但这就是想法。有关于 n 边形的论文,但我只会做正方形。因此,圆的均匀分布是一个常见问
考虑以下示例: import itertools import numpy as np a = np.arange(0,5) b = np.arange(0,3) c = np.arange(0,7)
SQL Server 将一组值分成 5 组,每组的 sum(count) 应该均匀分布。 表仅包含 2 列 rid 和 count。 create table t1(rid int, count in
我有以下简单的 HTML。 A B C 和 CSS: ul { width: 100%; display: flex; flex-direction:
我是一名优秀的程序员,十分优秀!