我正在尝试创建一个在图的顶部和右侧有一个轴的图。我向 x 轴和 y 轴添加了小刻度,但我注意到当我尝试添加第二个 x 轴和 y 轴时,小刻度被删除。我还希望删除第二个轴标签,但这似乎不起作用。我想知道我添加小刻度的方式是否存在问题?
我的主要问题是,如何向第二个轴添加小刻度以及如何删除标签。
data.bw <- structure(list(num = c(88L, 58L, 15L, 11L, 14L, 29L, 34L, 40L,
24L, 20L, 3L, 1L, 1L), bar = c(0.5, 1.5, 2.5, 3.5, 4.5, 5.5,
6.5, 7.5, 8.5, 9.5, 10.5, 11.5, 12.5), group = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "A", class = "factor")), class = "data.frame", row.names = c(NA,
-13L))
library(ggplot2)
library(ggh4x)
ggplot(data.bw, aes(bar,num, fill = group)) +
geom_bar(stat = 'identity', width = 1) +
scale_fill_manual(values = c('orange', 'khaki')) +
scale_y_continuous(
minor_breaks = seq(0, 90, by = 2),
breaks = seq(0, 90, by = 10), limits = c(0, 90),
expand = expansion(mult = c(0, 0)),
sec.axis = dup_axis(name = NULL),
guide = "axis_minor"
) +
scale_x_continuous(
minor_breaks = seq(0, 14, by = 0.5),
breaks = seq(0, 14, by = 2), limits = c(0, 14),
expand = expansion(mult = c(0, 0)),
sec.axis = dup_axis(name = NULL),
guide = "axis_minor"
) +
scale_fill_manual(values = alpha(c("red"), .3)) +
theme_bw() +
theme(
panel.border = element_rect(colour = "black", fill=NA, size=1),
plot.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank()
)
最佳答案
据我所知,ggplot2 中的辅助轴没有获得任何较小的中断信息来传递给指南(或被搞砸)。另请参阅相关 issue 。但是,由于您使用的是 dup_axis()
,我假设您想要复制主轴,您也可以使用 guides(x.sec = "axis_minor", y .sec = "axis_minor")
,直接从刻度而不是辅助刻度中获取顺序。
删除辅助轴的标签就像将适当的主题元素设置为 element_blank()
一样简单。如果您指的是轴标题而不是文本,则默认情况下这些标题是关闭的,但您可以将它们作为 guides(x.sec =guide_axis_minor(title = "My title"))
传递(如果您需要它们)。
data.bw <- structure(list(num = c(88L, 58L, 15L, 11L, 14L, 29L, 34L, 40L,
24L, 20L, 3L, 1L, 1L), bar = c(0.5, 1.5, 2.5, 3.5, 4.5, 5.5,
6.5, 7.5, 8.5, 9.5, 10.5, 11.5, 12.5), group = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "A", class = "factor")), class = "data.frame", row.names = c(NA,
-13L))
library(ggplot2)
library(ggh4x)
ggplot(data.bw, aes(bar,num, fill = group)) +
geom_bar(stat = 'identity', width = 1) +
scale_fill_manual(values = c('orange', 'khaki')) +
scale_y_continuous(
minor_breaks = seq(0, 90, by = 2),
breaks = seq(0, 90, by = 10), limits = c(0, 90),
expand = expansion(mult = c(0, 0)),
guide = "axis_minor"
) +
scale_x_continuous(
minor_breaks = seq(0, 14, by = 0.5),
breaks = seq(0, 14, by = 2), limits = c(0, 14),
expand = expansion(mult = c(0, 0)),
guide = "axis_minor"
) +
guides(x.sec = "axis_minor", y.sec = "axis_minor") +
theme_bw() +
theme(
panel.border = element_rect(colour = "black", fill=NA, size=1),
plot.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.text.x.top = element_blank(),
axis.text.y.right = element_blank()
)
由 reprex package 于 2021 年 9 月 13 日创建(v2.0.1)
关于r - 添加带有小刻度的第二个轴(顶部和右侧),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69167607/