通过x轴扩大绘图区域,为直接标签腾出空间

And*_*eas 6 plot r ggplot2 axis-labels direct-labels

我正在磨光图形,在绘图区域安装直接标签时遇到问题。想要删除y1图中左侧和y轴之间大部分区域,类似于下面的代码生成的区域,但是要保留右侧的额外区域以为标签留出空间。

添加+scale_x_discrete(expand=c(0,0.05))会删除两侧的多余区域,但不会留出标签空间,并且似乎无法仅在一侧将其删除。

在绘图区域的右边加上边距+theme(plot.margin = unit(c(0,4,0,0), "cm"))仍然不允许标签在那里出现。

将标签放置在边框右侧的外部的解决方案会更好。

任何帮助,不胜感激。

library(ggplot2)
library(directlabels)
library(reshape2)
theme_set(theme_bw())
# some data
dfr<-data.frame(c("Longish Name A","Longish Name B","Longish Name C"),c(1,1,1),c(1,2,3),c(2,3,4)) 
colnames(dfr) <- c("subject","y1","y2","y3")
dfr<-melt(dfr, id.vars="subject")
# the graph
ggplot(data=dfr,aes(y=value, x=variable, group=subject)) +
geom_line(aes(color=subject))+
geom_dl(aes(label=subject), list(dl.trans(x=x+0.2), "last.qp", cex=0.5)) +
guides(color=FALSE)
Run Code Online (Sandbox Code Playgroud)

Did*_*rts 7

将x值转换为内的数字aes(),然后用于scale_x_continuous()返回原始标签并设置limits=较宽的一面。

ggplot(data=dfr,aes(y=value, x=as.numeric(variable), group=subject)) +
  geom_line(aes(color=subject))+
  geom_dl(aes(label=subject), list(dl.trans(x=x+0.2), "last.qp", cex=0.5)) +
  guides(color=FALSE)+
  scale_x_continuous(breaks=c(1,2,3),labels=c("y1","y2","y3"),expand=c(0,0.05),
                     limits=c(1,3.4))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明