我正在修改我的图表,并且在绘图区域中安装直接标签时遇到问题。想要删除图中左侧y1
和y轴之间的大部分区域,类似于下面代码生成的区域,但要将额外区域保留在右侧,以便为标签留出空间。 / p>
添加+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)
答案 0 :(得分:5)
将您的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))