问: 如何在ggplot
中绘制上标文字但不丢失前导零?
目标。我正在尝试使用上标信息绘制文字标签。 上标是年份的最后两位数 观察(例如,2018年为“18”,2005年为“05”)。
问题。我几乎可以让这个情节正常工作,但ggplot
吞下前导零。例如:上标“18”
正确地绘制为“18”,但上标“05”图
错误地称为“5”。
这是一个玩具示例:
## libraries
library(dplyr)
library(ggplot2)
## example data
Dat <-
tribble(~ state, ~ year, ~ x, ~ y,
"MI", 2010, 1, 1,
"CA", 2005, 2, 2,
"NY", 2011, 3, 3,
"AK", 2003, 4, 4,
"IL", 2012, 5, 5)
## create the label: state with a superscripted year (e.g., MI^10, AK^03)
Dat$lab <-
with(Dat,
paste(state,
"^{",
substr(as.character(year), 3, 4),
"}",
sep = ""))
## plot the labels: note that the 0s in the superscripts disappear
ggplot(Dat,
aes(x = x,
y = y,
label = lab)) +
geom_text(parse = TRUE) +
theme_bw()
它产生以下图:
请注意MI
,NY
和IL
正确绘制
两位数的上标,但CA
和AK
不正确
一位数的上标。 如何保留前导零?
答案 0 :(得分:1)
您需要做的就是在将表达式粘贴在一起时,在要标记的数字周围添加引号。这会将数字格式化为表达式中的字符串,以便保留前导零。您可以使用转义字符\
将双引号添加到已经双引号的字符串中。编辑&#34;创建标签&#34;代码的一部分如下:
Dat$lab <-
with(Dat,
paste(state,
"^{\"",
substr(as.character(year), 3, 4),
"\"}",
sep = ""))
我刚才用ggplot2 2.2.1对它进行了测试,结果正常。