Подписи (или другая математическая формула) в ярлыках фактора легенды ggplot2 - PullRequest
2 голосов
/ 20 декабря 2011

Я пытался добавить подписки в мою цветовую легенду ggplot2 geom_point с помощью scale_colour_discrete.Подобные проблемы всплыли здесь

p <- ggplot(myData, aes(myFeature1,myFeature2))
p <- p + geom_point(aes(colour = myFeature3)) + facet_grid(n ~ cond)
p <- p + scale_colour_discrete(breaks = levels(myData$myFeature3), labels = c(expression(myFeature3[1]),expression(myFeature3[2]))

Однако возникает следующая ошибка: Ошибка в FUN (X [[1L]], ...): невозможно принудительно ввести тип 'symbol' ввектор типа 'double'

Эта ошибка НЕ ​​возникает, без определения labels expression.Это происходит все, что находится внутри expression.

Есть идеи по этому поводу?scale_colour_discrete просто не работает с expression?Есть ли другой способ получить подписки на эти имена факторов легенды?

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 21 декабря 2011

Вот пример использования набора данных diamonds, в котором метки для алмазной огранки заменяются на Cut_1, ..., Cut_5.

ggplot(diamonds, aes(x = carat, y = price)) + 
  geom_point(aes(colour = cut)) + 
  facet_grid(color ~ clarity) + 
  scale_colour_discrete(breaks = levels(diamonds$cut), 
                        labels = c(expression(Cut[1]),
                                   expression(Cut[2]),
                                   expression(Cut[3]),
                                   expression(Cut[4]),
                                   expression(Cut[5])))

Если это не помогает вам найти решениек вашей проблеме, можете ли вы предоставить воспроизводимый пример для других, чтобы решить проблему?

1 голос
/ 20 декабря 2011

Невозможно воспроизвести это без ваших данных.Попытка сделать что-то похожее с данными «алмазов», как описано в справке (scale_colour_discrete):

d + scale_colour_discrete(breaks=levels(diamonds$clarity),labels=rep(expression(a^2),8))

работает, помечая все уровни знаком a в квадрате в математической записи.

d + scale_colour_discrete(breaks=levels(diamonds$clarity),labels=rep(expression(clarity[1]),8))

работает,маркировка с четкостью индекса 1 на всех уровнях.

...