r - 相同刻度/标签的几种颜色

标签 r ggplot2 axis-labels

我的数据:

dat <- data.frame(x = c(1,2,3,4,5,6), y = c(2,3,4,6,2,3))

我的情节的中断和标签:

breaks <- c(3,5)
labels <- c(paste(3,"(0.3)"), paste(5,"(0.5)"))

还有我的情节:

library(ggplot2)
ggplot() + 
  geom_point(data = dat, aes(x = x, y = y)) + 
  scale_y_continuous(breaks = breaks, labels = labels)

我想给相同的标签涂上不同的颜色。例如,我希望用与“(0.3)”不同的颜色为“3”着色。

最佳答案

这是一种使用 patchwork 将 2 个绘图粘贴在一起的方法,它是一个类似于 cowplot 的包,但具有更多的灵 active 。我将标签分成 2 个向量,一个是整数,一个是括号中的小数。然后制作 2 个图,一个用于没有其他标记的外部标签,一个用于主图。

在做了一轮尝试构建这个之后,我开始调整每个主题的边距,意识到我需要将顶部和底部边距设置为相同,但在左侧图的右侧和左侧没有留边距右图的一侧,所以它们之间的空间很小。当然还有一些方法可以调整它,但我会从一些间距开始。

library(tidyverse)
library(patchwork)

lbl_int <- str_extract(labels, "^\\d+")
lbl_frac <- str_extract(labels, "\\(.+\\)")

主要情节相当简单,只需删除主题左侧的元素即可。

(main_plot <- ggplot(dat, aes(x = x, y = y)) + 
  geom_point() + 
  scale_y_continuous(breaks = breaks, labels = lbl_frac) +
  theme(axis.text.y.left = element_text(color = "gray"), 
        axis.title.y.left = element_blank(),
        plot.margin = margin(1, 1, 1, 0, "mm")))

外部标签的绘图已删除大部分主题元素,但具有 y 轴标题和标签。

(int_plot <- ggplot(dat, aes(x = 0, y = y)) + 
  scale_y_continuous(breaks = breaks, labels = lbl_int) +
  theme(axis.text.y.left = element_text(color = "black"), 
        axis.title.y.left = element_text(color = "black"),
        axis.title.x = element_blank(),
        panel.grid = element_blank(),
        axis.ticks = element_blank(),
        axis.text.x = element_blank(),
        panel.background = element_blank(),
        plot.margin = margin(1, 0, 1, 1, "mm")))

然后 patchwork 可以很容易地将绘图添加在一起——字面意思是使用 +——然后​​设置宽度。同样,这里有一些您可以根据需要进行调整的内容,但与右侧相比,我将左侧的绘图做得非常非常瘦。

int_plot + main_plot +
  plot_layout(ncol = 2, widths = c(1e-3, 1))

reprex package 创建于 2018-12-21 (v0.2.1)

关于r - 相同刻度/标签的几种颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53883348/

相关文章:

python - 如何在 plotly 中为 ticktext 着色?

r - 使用嵌套标题的汇总表

r - 查找多列具有相同值的行

r - 导出具有负刻度线长度的图时,轴标签会碰到轴 (ggplot2)

javascript - 如何使用D3 Axis 命令正确调换X轴和Y轴?

python - matplotlib中轴标签文本顶部的位置是什么?

r - 图例范围和颜色分布的 spplot 问题

python - 如何使用 R studio 导入 Pandas

按值对列重新排序,同时保持组顺序

r - ggplot2 geom_bar - 如何保持 data.frame 的顺序