- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我可以为以下问题找到解决方案。我非常感谢一些帮助!
以下代码使用 facet 生成条形图。但是,由于 ggplot2 在某些组中具有“额外空间”,即使我指定的宽度为 0.1 或类似值,它也会使条形更宽。我觉得这很烦人,因为它看起来很不专业。我希望所有的条形看起来都一样(填充除外)。我希望有人能告诉我如何解决这个问题。
其次,我如何在构面窗口中重新排序不同的类,以便顺序始终为 C1、C2 ... C5、M、F、所有适用的地方。我尝试对因子的级别进行排序,但由于并非所有类都出现在每个图形部分中,因此它不起作用,或者至少我认为这是原因。
第三,我怎样才能减少酒吧之间的空间?使整个图形更加压缩。即使我将图像缩小以进行导出,R 也会将条形缩放得更小,但条形之间的空间仍然很大。
我将不胜感激任何这些答案的反馈!
我的数据:
http://pastebin.com/embed_iframe.php?i=kNVnmcR1
我的代码:
library(dplyr)
library(gdata)
library(ggplot2)
library(directlabels)
library(scales)
all<-read.xls('all_auto_visual_c.xls')
all$station<-as.factor(all$station)
#all$group.new<-factor(all$group, levels=c('C. hyperboreus','C. glacialis','Special Calanus','M. longa','Pseudocalanus sp.','Copepoda'))
allp <- ggplot(data = all, aes(x=shortname2, y=perc_correct, group=group,fill=sample_size)) +
geom_bar(aes(fill=sample_size),stat="identity", position="dodge", width=0.1, colour="NA") + scale_fill_gradient("Sample size (n)",low="lightblue",high="navyblue")+
facet_wrap(group~station,ncol=2,scales="free_x")+
xlab("Species and stages") + ylab("Automatic identification and visual validation concur (%)") +
ggtitle("Visual validation of predictions") +
theme_bw() +
theme(plot.title = element_text(lineheight=.8, face="bold", size=20,vjust=1), axis.text.x = element_text(colour="grey20",size=12,angle=0,hjust=.5,vjust=.5,face="bold"), axis.text.y = element_text(colour="grey20",size=12,angle=0,hjust=1,vjust=0,face="bold"), axis.title.x = element_text(colour="grey20",size=15,angle=0,hjust=.5,vjust=0,face="bold"), axis.title.y = element_text(colour="grey20",size=15,angle=90,hjust=.5,vjust=1,face="bold"),legend.position="none", strip.text.x = element_text(size = 12, face="bold", colour = "black", angle = 0), strip.text.y = element_text(size = 12, face="bold", colour = "black"))
allp
#ggsave(allp, file="auto_visual_stackover.jpeg", height= 11, width= 8.5, dpi= 400,)
最佳答案
假设条形宽度与 x-break 的数量成反比,可以输入适当的比例因子作为 width
美学来控制条的宽度。但首先,计算每个面板中 x-break 的数量,计算缩放因子,然后将它们放回“所有”数据框中。
更新到 ggplot2 2.0.0 facet_wrap
中提到的每一列在 strip 中获得自己的行。在编辑中,在数据框中设置了一个新的标签变量,以便 strip 标签保留在一行上。
library(ggplot2)
library(plyr)
all = structure(list(station = 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, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Station 101",
"Station 126"), class = "factor"), shortname2 = structure(c(2L,
7L, 8L, 11L, 1L, 5L, 7L, 8L, 11L, 1L, 2L, 3L, 5L, 7L, 8L, 12L,
11L, 1L, 6L, 8L, 15L, 14L, 9L, 10L, 4L, 6L, 2L, 7L, 8L, 11L,
1L, 5L, 7L, 8L, 11L, 1L, 2L, 3L, 5L, 7L, 8L, 12L, 11L, 1L, 8L,
11L, 1L, 15L, 14L, 13L, 9L, 10L), .Label = c("All", "C1", "C2",
"C2&1", "C3", "C3&2", "C4", "C5", "Cegg", "Cnaup", "F", "M",
"Micro", "Oith", "Tric"), class = "factor"), color = c(1L, 2L,
3L, 4L, 5L, 6L, 7L, 8L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L,
18L, 19L, 21L, 26L, 30L, 31L, 33L, 34L, 20L, 21L, 1L, 2L, 3L,
4L, 5L, 6L, 7L, 8L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L,
19L, 26L, 28L, 29L, 30L, 31L, 32L, 33L, 34L), group = structure(c(1L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 6L, 5L, 3L, 3L, 3L, 3L, 6L, 6L, 1L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 2L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 3L, 3L,
3L, 3L, 3L), .Label = c("cgla", "Chyp", "Cope", "mlong", "pseudo",
"specC"), class = "factor"), sample_size = c(11L, 37L, 55L, 16L,
119L, 21L, 55L, 42L, 40L, 158L, 24L, 16L, 17L, 27L, 14L, 45L,
98L, 241L, 30L, 34L, 51L, 22L, 14L, 47L, 13L, 41L, 24L, 41L,
74L, 20L, 159L, 18L, 100L, 32L, 29L, 184L, 31L, 17L, 27L, 23L,
21L, 17L, 49L, 185L, 30L, 16L, 46L, 57L, 16L, 12L, 30L, 42L),
perc_correct = c(91L, 78L, 89L, 81L, 85L, 90L, 91L, 93L,
80L, 89L, 75L, 75L, 76L, 81L, 86L, 76L, 79L, 78L, 90L, 97L,
75L, 86L, 93L, 74L, 85L, 88L, 88L, 90L, 92L, 90L, 91L, 89L,
89L, 91L, 90L, 89L, 81L, 88L, 74L, 78L, 90L, 82L, 84L, 82L,
90L, 94L, 91L, 81L, 69L, 83L, 90L, 81L)), class = "data.frame", row.names = c(NA,
-52L))
all$station <- as.factor(all$station)
# Calculate scaling factor and insert into data frame
library(plyr)
N = ddply(all, .(station, group), function(x) length(row.names(x)))
N$Fac = N$V1 / max(N$V1)
all = merge(all, N[,-3], by = c("station", "group"))
all$label = paste(all$group, all$station, sep = ", ")
allp <- ggplot(data = all, aes(x=shortname2, y=perc_correct, group=group, fill=sample_size, width = .5*Fac)) +
geom_bar(stat="identity", position="dodge", colour="NA") +
scale_fill_gradient("Sample size (n)",low="lightblue",high="navyblue")+
facet_wrap(~label,ncol=2,scales="free_x") +
xlab("Species and stages") + ylab("Automatic identification and visual validation concur (%)") +
ggtitle("Visual validation of predictions") +
theme_bw() +
theme(plot.title = element_text(lineheight=.8, face="bold", size=20,vjust=1),
axis.text.x = element_text(colour="grey20",size=12,angle=0,hjust=.5,vjust=.5,face="bold"),
axis.text.y = element_text(colour="grey20",size=12,angle=0,hjust=1,vjust=0,face="bold"),
axis.title.x = element_text(colour="grey20",size=15,angle=0,hjust=.5,vjust=0,face="bold"),
axis.title.y = element_text(colour="grey20",size=15,angle=90,hjust=.5,vjust=1,face="bold"),
legend.position="none",
strip.text.x = element_text(size = 12, face="bold", colour = "black", angle = 0),
strip.text.y = element_text(size = 12, face="bold", colour = "black"))
allp
关于r - 使用 facet_wrap 时,geom_bar 中的条具有不需要的不同宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30196143/
有没有办法控制 facet_wrap() 图中单个图的大小/纵横比?谢谢, -D 最佳答案 是否可以简单地“释放”x 轴、y 轴或两者的解决方案scales与 scales = "free_x" ,
据我所知 facet_wrap按行填充。以同样的方式,您可以指定如何填充 matrix与 byrow我希望你可以用 facet_wrap 做同样的事情。我知道我可以重新排序一个因子的水平以这种方式绘制
我想生成一个facet_wrap,其中构面内因子的顺序是基于列因子顺序之一。问题的核心是每个组都有重复的因子水平,当我绘制时,facet_wrap 中仅正确排序了一个因子水平。 (见下图) 我尝试对每
简而言之:我想为使用 facet_wrap 制作的双面板图的每个“面板”设置单独的图例。使用 facet_wrap(scales="free") 在我想要不同的轴比例时效果很好,但不适用于点的大小。
如何让每个新行都以新的因子水平开始?目前它基于批处理和样本进行包装,但不会在新的批处理因子级别中断。尝试“facet_grid(~batch~sample)”时,有许多不需要的空面板。 R 的结果和
我正在尝试使用 facet_wrap 将标签(a、b、c...)添加到实际图的边缘之外的图。我希望将它们放在标签区域中,但与 facet_wrap 标签(这是数据组的名称)分开。我可以使用 coord
我正在尝试使用 facet_wrap 绘图,默认情况下按字母顺序排列绘图。但是,所需的结果是按数字降序排列。 下面是我得到的: library(tidyverse) M % ggplot(ae
我的目标是让图中所有国家之间的距离大致相等。例如,在第一类(增加)中,国家是分散的。另一方面,第二类和第三类国家之间的距离太近了。 这迫使我减小国家文本的大小(例如“IS”、“UK”...)和绘制的估
我正在使用 ggplot2 制作几个直方图和 facet_wrap并想在每个面板上绘制平均值。下面,我创建了一个虚拟数据框,找到每个方面的平均值,然后使用 geom_point 创建添加平均值的图。
我尝试根据与相应 facet_wrap 图中相同的数据,将直方图 suplots 添加到 facet_wrap 图的每个部分 geom_sf 图中。 我通过 Google 找到了一些方法,但到目前为止
在以下使用 facet_wrap , 双方 year和 model显示在绘图标签中。 library(tidyverse) mpg %>% filter(manufacturer=='audi')
我写了一个函数来绘制条形图。但是当我开始多面包装时,'~' 符号让事情变得困难。 rf.funct <- function(dat, predictor, feature){ ggplot(get
我有以下数据集: structure(list(Geschaeft = c(0.0961028525512254, 0.0753516756309475, 0, 0.0722803347280335,
假设我有这些数据: set.seed(100) mydf<- data.frame( day = rep(1:5, each=20), id = rep(LETTERS[1:4],25), x = r
我正在尝试在 ggplot 中创建图表使用 facet_wrap争论。 但是,我不想在每个小图上都有标签,我只想在图的顶部和左侧有一个标签。 例如在下图中,我想在顶部标签 SI2、SI1、WS2 和左
数据框 (借自 here): df.test <- data.frame(id = rep(1:6, each = 50), x = rnorm(50*6, mean = 10, sd = 5),
我的 ggplot 有以下代码 - facet_wrap 函数在页面上为每个 Name 绘制 20 个图,沿 x 轴有 5 个 Pcode。我想计算每个名称的平均 TE.Contr 并将该值绘制为每个
我试图实现的是让条形按每个面板的给定变量排序。 一个简单的例子: library(ggplot2) library(plyr) df <- data.frame(fac = c
我正在努力为 facet_wrap() 中的每个方面绘制渐变色标独立。 数据太大,无法在此处发布,但这是我的代码: ggplot(stack, aes(hour, day)) + geom_til
我正在尝试使用facet_wrap和ggplot2将多个标题添加到绘图中。说您例如拥有过去两年的季度数据,并且希望将季度数据与两个主要标题进行图形化比较; 2014年和2015年,以及相应季度的标题。
我是一名优秀的程序员,十分优秀!