Как изменить длину текста в geom_text в R ggplot? - PullRequest
0 голосов
/ 23 ноября 2018

Я строю некоторый текст, используя geom_label в ggplot в R, но я не могу понять, как изменить размер текста в зависимости от переменной.Обратите внимание, что под «размером» я подразумеваю не ширину текста, а его длину.Рассмотрим следующие фиктивные данные и рисунок, который они генерируют:

x.cord <- c(4,5,1,6)
duration <- c(0.4, 0.7, 0.2, 0.3)
text <- c("know", "boy", "man", "gift")

df <- data.frame(cbind(x.cord, duration, text))


p <- ggplot(df, aes(x.cord, rownames(df), label = text))

p + geom_label(aes(fill=text))

enter image description here

На приведенном выше графике я могу нанести текст, расположенный наx.cord (то есть x-координата), но я также хочу, чтобы длина текста была равна переменной продолжительности.

Если я использую параметр размера следующим образом:

p + geom_label(aes(fill=text, size=duration))

Я получаю следующий рисунок: enter image description here

Я могу контролировать «ширину» текста на основе переменной длительности, как показано на рисунке выше, но я могу »Кажется, я не нашел ни одного параметра, который помог бы мне контролировать «длину» текстового поля.Любые предложения, как я могу это сделать?

1 Ответ

0 голосов
/ 23 ноября 2018

Не самое элегантное решение, но я не уверен на 100%, что вы ищете.Я думаю, что это также отчасти то, что EcologyTom имел в видуМожет быть как то так?

x.cord <- c(4,5,1,6)
duration <- c(0.4, 0.7, 0.2, 0.3)
text <- c("know", "boy", "man", "gift")
df <- data.frame(cbind(as.numeric(x.cord), as.numeric(duration), text))

p = ggplot(df, aes(x.cord, as.numeric(rownames(df)), label = text)) +
  geom_tile(aes(x = x.cord, y = as.numeric(rownames(df)), width = duration, height = 0.1, fill = text)) +
  geom_text()
p

enter image description here

...