2016-05-03 29 views
3

geom_dl()に問題があります.2つのグループが同じラベルを持つため、正しくラベルを配置しません。私はそれを見ることができます2つのグループのラベルが同じ場合、directlabels :: geom_dlを使用

data$groups <- data$label 

GeomDlコールの中に問題が発生していますが、私はそれを修正する方法を見つけることができません。

これは、それが現在のようになります。

labelplacedincorrectly

と、これは、それがどのように見えるかです:ここでは

は、データとggplotコードです:

dat <- structure(list(level = structure(c(3L, 3L, 1L, 1L, 2L, 2L), .Label = c("2", "3", "1"), class = "factor"), year = c(2013L, 2014L, 2013L, 2014L, 2013L, 2014L), mean = c(9.86464372862218, 9.61027271206025, 18.3483708337732, 15.3459903281993, 6.75036415837688, 7.33169996044336), pchange = c(" 68%", " 68%", " 76%", " 76%", " 76%", " 76%")), .Names = c("level", "year", "mean", "pchange"), row.names = c(413L, 414L, 419L, 420L, 425L, 426L), class = "data.frame") 

ggplot(dat, aes(x = year, y = mean)) + 
    geom_line(aes(color = level)) + 
    geom_dl(aes(label=pchange, color=level), method=list("last.qp")) 

答えて

1

ここに「目に見えないUnicodeの文字とのいくつかのブードゥー教:

dat$pchange2 <- dat$pchange 
dat$pchange2[3:4] <- paste0(dat$pchange[3:4], "\u200B") 

ggplot(dat, aes(x = year, y = mean)) + 
    geom_line(aes(color = level)) + 
    geom_dl(aes(label=pchange2, color=level), method=list("last.qp")) 

enter image description here

あなたが同じラベルを持つ複数の行がある場合は、二度、一度に同じ文字を追加することができ、などと同じ考え方をするために使用することができます多かれ少なかれ普遍的な解決策となる最小限の前処理機能を書いてください。ここで

は完全なソリューションは、(@ fishgal64による)のようになります方法は次のとおりです。

require(magrittr) 
require(dplyr) 

dat <- select(dat, level, pchange) %>% 
    unique() %>% 
    mutate(pchange2 = ifelse(duplicated(pchange), paste0(pchange, "\u200B"), pchange)) %>% 
    merge(dat) 
+0

は、あなたが望むなら私の答えにこれを追加すること自由に感じなさい。エレガントなもの! – tonytonov

関連する問題