我搜索了很长一段时间但找不到确定的答案,虽然这是一个非常基本的问题。
我使用geom_bar(ggplot2)来可视化我的数据。从输入数据帧直接推断出x轴组的名称。但是,我想更改名称而不更改相应的dataframe列。我想这样做是因为我想对名称进行一些基本的文本编辑(使用文本下标)。
我尝试了scale_x_discrete,但没有成功。不知何故,我无法指定限制并同时显示数据。
在下面我有一个最小的例子。让我们说我想在不触及实际数据帧的情况下将字母A-E更改为B-F。
Master = data.frame(x = rep(LETTERS[1:5], 3), y = runif(15, 0, 1), fac = c(rep(1,5), rep(2,5), rep(3,5)))
Master[,3] = as.factor(Master[,3])
## plotting
p = ggplot(Master, aes(fill=fac, y=y, x=x)) +
geom_bar(position="dodge", stat="identity") +
scale_y_continuous(breaks = c(0,0.2,0.4,0.6,0.8,1), labels = c(0,0.2,0.4,0.6,0.8,1), limits = c(0,1)) +
labs(title="", x="", y="") +
theme_light() +
theme(axis.title.y = element_text(size = rel(2), angle = 90)) +
theme(axis.title.x = element_text(size = rel(2), angle = 0)) +
theme(axis.text.x = element_text(color="black", size=16, angle=0)) +
theme(axis.text.y = element_text(color="black", size=16, angle=0)) +
scale_fill_manual(values=c("coral", "#C77CFF", "red", "cyan", "orange", "darkgrey"),
name="fac",
breaks=seq(1,6,1),
labels=seq(1,6,1)) +
theme(legend.title = element_text(colour="black", size=18, face="bold")) +
theme(legend.text = element_text(colour="black", size = 16)) +
theme(legend.key.size=unit(0.8,"cm"))
print(p)