序言:我想从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/