3

geom_dl()2 つのグループが同じラベルを持っているため、ラベルが正しく配置されないという問題があります。わかります

data$groups <- data$label

GeomDl 呼び出しの内部で問題が発生していますが、修正方法がわかりません。

現在の様子は次のとおりです。

ラベルの貼り付けが正しくない

これは次のようになります。

データと 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"))
4

1 に答える 1

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"))

ここに画像の説明を入力

同じラベルの行が複数ある場合は、同じ文字を 1 回、2 回など追加できます。同じアイデアを使用して、多かれ少なかれ普遍的なソリューションとなる最小限の前処理関数を作成できます。

完全なソリューションは次のようになります (by @fishgal64):

require(magrittr) 
require(dplyr)

dat <- select(dat, level, pchange) %>% 
  unique() %>% 
  mutate(pchange2 = ifelse(duplicated(pchange), paste0(pchange, "\u200B"), pchange)) %>% 
  merge(dat)
于 2016-05-04T08:19:07.057 に答える