序言:我想从R创建出版物级图形,而无需进行后处理。我所的其​​他研究人员总是在图形软件(例如Adobe Illustrator)中执行后处理。我希望避免这种情况。

我的抱怨是R对于负数(尤其是在绘图轴中)没有使用正确的负号:

plot(-20:-1, rnorm(20) + 1 : 20)




(我已圈出违规者供您考虑。)

作为某种印刷风格的书呆子(确实如此!请检查我的职业简历!),这是不可接受的。我需要在这里使用正确的Unicode字符ᴍɪɴᴜꜱꜱɪɢɴ(U + 2212,“ −”)。我的一个朋友通过在发布之前替换Adobe Illustrator中的所有减号来实现此目的,但我不禁认为,必须有一种更好的方法-从R内实现此目标;并且不会强迫我手动替换所有轴标签。

(我目前未使用ggplot2,但如果有一种仅适用于ggplot2的解决方案,我会很乐意使用。)

最佳答案

新软件包signs完全符合OP的要求。这是网站上的示例:

library(dplyr)
library(ggplot2)
library(ggrepel)

theme_set(theme_gray())
theme_update(panel.grid.minor = element_blank())

p <-
  ggplot(sleep) +
  aes(group, extra) +
  geom_point() +
  xlab("Drug") +
  ylab("Extra Sleep (hours)")

label_hours <- function(mapping) {
  geom_text_repel(
    mapping,
    nudge_x       = -.1,
    direction     = "y",
    segment.size  = .4,
    segment.color = "grey75",
    hjust         = "right"
  )
}

p +
  label_hours(
    mapping = aes(
      label = case_when(
        group == 1 ~ signs(extra, accuracy = .1), # Unicode minuses
        group == 2 ~ number(extra, accuracy = .1) # ASCII minuses
      )
    )
  ) +
  scale_y_continuous(
    limits = c(-4, 6),
    breaks = seq(-4, 6),
    labels = signs_format(accuracy = .1) # Unicode, analogous to number_format()
  )

关于r - 修复轴标签中的排版,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14780860/

10-12 20:19