Пакет «directlabels», по-видимому, по умолчанию пытается поместить каждую метку в нормальную область рисования, уменьшая размер шрифта метки.
Ниже Label for One
, Label for Two
и Label for Threeeeeeeeee
все должны иметь одинаковый размер шрифта, и это нормально, если метки выходят за пределы области построения (поскольку clip
отключен для отображения пользовательских аннотаций).
Фактически, я мог бы захотеть установить xlim=c(1,3)
, и метки должны быть полностью вне области построения. Левый столбец изображений ниже соответствует xlim=c(1,3.4)
, правый столбец — xlim=c(1,3)
.
Я узнал, что cex
можно использовать для сброса размера шрифта метки, но, похоже, это противоречит алгоритму разделения меток пакета. Верхний ряд изображений ниже не соответствует cex
, нижний ряд — cex=1
.
Было бы здорово найти способ, чтобы метки не перекрывались, имели одинаковый размер шрифта, и это работало бы с xlim=c(1,3)
и xlim=c(1,3.4)
.
library(reshape)
library(ggplot2)
library(directlabels)
df=data.frame(
x = 1:3,
One=c(12, 8, 13),
Two=c(13, 7, 11),
Threeeeeeeeee=c(11, 9, 11))
df.d.melt = melt(df[,c("x","One","Two","Threeeeeeeeee")], id.vars="x")
df.d.melt$variable1 = df.d.melt$variable
levels(df.d.melt$variable1) = paste("","Lable for",levels(df.d.melt$variable1))
p = ggplot(df.d.melt, aes(x=x, y=value, color=variable)) +
geom_line(size=1.1) +
geom_text(aes(x =3.4, y=8, label="Custom Outside\nChart Annotation"), show_guide=FALSE) +
coord_cartesian(xlim=c(1,3.4)) +
geom_dl(aes(label=variable1), method=list("last.qp", cex=1), show_guide=FALSE) +
theme(legend.position="top",plot.margin = unit(c(0, 4, 0, 0), "cm"))
p1 <- ggplot_gtable(ggplot_build(p))
p1$layout$clip[p1$layout$name=="panel"] <- "off"
grid.draw(p1)