我想 for each 绘图添加一个标记,理想情况下,该标记应该放置在x轴的顶部和中心位置,以下是示例:

ggplot2::ggplot(mtcars) +
  ggplot2::geom_point(ggplot2::aes(mpg, wt)) +
  ggplot2::geom_smooth(ggplot2::aes(mpg, wt)) +
  ggplot2::scale_y_continuous(labels = function(x) paste0(x, " very very long label")) +
  ggplot2::labs(tag = "A", x = "mpg", y = "wt") +
  ggplot2::theme(plot.tag.position = "top")

The out put looks like this: enter image description here

我注意到,当y轴标签非常长时,标记似乎位于整个面板的中心,而不是x轴的中心.我该怎么修好它?

推荐答案

如果你不打算使用映射到数据的facet,你可以用一个固定的值来创建一个假的facet,并使用strip.background theme元素来设置它的样式:

ggplot(mtcars) +
  geom_point(aes(mpg, wt)) +
  geom_smooth(aes(mpg, wt)) +
  scale_y_continuous(labels = function(x) paste0(x, " very very long label")) +
  facet_wrap(~ "A") +
  labs(x = "mpg", y = "wt") +
  theme(strip.background = element_rect(fill = "white"))

可能更好的 Select 是添加一个没有标签和断点的辅助x轴,并通过将theme上的axis.line.x.top设置为element_blank()来删除线:

ggplot(mtcars) +
  geom_point(aes(mpg, wt)) +
  geom_smooth(aes(mpg, wt)) +
  scale_y_continuous(labels = function(x) paste0(x, " very very long label")) +
  ###
  scale_x_continuous(sec.axis = dup_axis(name = "A", labels = NULL, breaks = NULL)) +
  ###
  labs(x = "mpg", y = "wt") +
  theme(axis.line.x.top = element_blank())

R相关问答推荐

从具有随机模式的字符串中提取值

如果行和列名以相同的开头,将矩阵值设置为0

为什么横向页面会导致officeverse中的页码/节头/页脚出现问题?

计算具有奇数日期的运行金额

在GGPLATE中将突出的点放在前面

在ggplot2中更改小提琴情节的顺序

矩阵的堆叠条形图,条形图上有数字作为标签

使用rvest从多个页面抓取时避免404错误

使用R中的dist()迭代ID匹配的欧几里德距离

汇总数据的Sheffe检验的P值(平均值和标准差)

查找所有站点的最小值

警告消息";没有非缺失的参数到min;,正在返回数据中的inf";.表分组集

扩展R中包含列表的数据框

如何删除R中除数字元素以外的所有元素

解析嵌套程度极高的地理数据

根据r中另一个文本列中给定的范围对各列求和

在r中整理图例和堆叠图的问题

如何在R中创建这些列?

基于R中的引用将向量值替换为数据框列的值

如何使用list_rind在列表中保留已命名但不包含第0行的记录?