Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何在ggplot2条形图中的记号标记之间绘制x轴标签和条形图?_R_Ggplot2_Axis Labels - Fatal编程技术网

R 如何在ggplot2条形图中的记号标记之间绘制x轴标签和条形图?

R 如何在ggplot2条形图中的记号标记之间绘制x轴标签和条形图?,r,ggplot2,axis-labels,R,Ggplot2,Axis Labels,我准备了一个MWE,希望能帮助我如何在x轴上的不同位置设置记号和标签,以便进行分组条形图 library(ggplot2) library(reshape2) data <- data.frame(name = c("X","Y","Z"), A = c(2,4,6), B = c(1,3,4), C = c(3,4,5)) data <- melt(data, id = 1) ggplot(data, aes(name,value)) + geom_bar(aes(fill

我准备了一个MWE,希望能帮助我如何在x轴上的不同位置设置记号和标签,以便进行分组条形图

library(ggplot2)
library(reshape2)

data <- data.frame(name = c("X","Y","Z"), A = c(2,4,6), B = c(1,3,4), C = c(3,4,5))
data <- melt(data, id = 1)

ggplot(data, aes(name,value)) +
  geom_bar(aes(fill = variable), position = "dodge", stat = "identity")
库(ggplot2)
图书馆(E2)

数据一个选项是将离散x标度转换为连续,以便于计算
中断
位置:

# numeric version of x values
data$x <- as.integer(as.factor(data$name))
#x值的数字版本

data$x这里是另一个使用
grid
包的解决方案

library(grid)

nTicks <- 2
tickersPosition <- unit(rep(1:nTicks /(nTicks+1), each=2), "native")
要更改记号的位置,我们需要创建
gtable

p2 <- ggplot_gtable(ggplot_build(p1))
重写位置后,我们可以运行

grid::grid.draw(p2)

将显示警告。这是因为拆分的数量不同。

我不清楚您希望标记和标签显示在哪里-在组之间?组之间只有两个位置,但有3个记号/标签。你能展示一下吗?蜱应该“框”出每组的标签,类似于亨里克在回答中所尝试的。如果比标签多打一个勾,一个显示在零(非常左),另一个显示在x轴的末端(非常右),那就太好了……谢谢你,Henrik,我将尝试使用更复杂的数据;-)我不在乎垂直网格线,因为我让它们消失了。@Johanna我记下了你对你问题的评论,并相应地更新了我的答案。我的需要一个小小的改变,
element\u line(color=c(rep(NA,len)<>代码>代替<代码> LeN-1 。不幸的是,TIKE在中间并不完美。这可以在UNITY()中很容易地调整。现在我没有时间找到通用解决方案。稍后可以编辑。
p1 <- ggplot(data, aes(name,value)) +
  geom_bar(aes(fill = variable), position = "dodge", stat = "identity") 
p2 <- ggplot_gtable(ggplot_build(p1))
p2$grobs[[7]]$children$axis$grobs[[1]]$x <- tickersPosition
grid::grid.draw(p2)