前言:我想在没有后处理的情况下从R创建发布级图形。我所在研究所的其他研究人员总是在图形软件(如Adobe Illustrator)中执行后处理。我希望能避免这种情况。
我的抱怨是R没有对负数使用正确的负号(特别是在绘图轴中):
plot(-20:-1, rnorm(20) + 1 : 20)
(我圈出了违规者,请您考虑。)
作为一个排版书呆子(这是真的!查看我的职业简历!)这是不可接受的。我需要在这里使用正确的Unicode字符ᴍɪɴᴜꜱꜱɪɢɴ(U+2212,“−”)。我的一个朋友在发布之前通过替换Adobe Illustrator中的所有减号来实现这一点,但我不禁认为肯定有更好的方法-在R- to中实现这一点;而且不会强迫我手动替换所有轴标签。
(我目前没有使用ggplot2,但如果有一个只能与ggplot2一起使用的解决方案,我会很乐意接受的。)
发布于 2020-04-03 21:21:16
新的包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()
)
发布于 2013-02-09 04:55:30
也许手动绘制轴和标签,而不是接受默认值?
plot(-20:-1, rnorm(20) + 1 : 20, xaxt="n")
Axis(-20:-1, at=seq(-20,-5,5), side=1,
labels=paste("\U2212",seq(20,5,-5),sep=""))
发布于 2013-02-09 05:34:28
另一种方法与Joshua Ulrich提供的方法几乎相同,只是您可以让R计算轴滴答:
plot(-20:-1, rnorm(20) + 1 : 20, xaxt="n")
at <- axTicks(1, usr=par("usr")[1:2])
labs <- gsub("-", "\U2212", print.default(at))
axis(1, at=at, labels=labs)
https://stackoverflow.com/questions/14780860
复制相似问题