Замена имеет [x] строк, данные имеют [y] при использовании scale_color_manual - PullRequest
0 голосов
/ 26 февраля 2019

Я строю график, используя ggplot2 n R 3.2.3, с шаблоном, который я использовал долгое время успешно.Теперь я получаю ту же ошибку, что и в здесь и здесь (replacement has %d rows, data has %d).

Единственное отличие от других, которые я использовал, это то, что я 'Я строю график, используя ядро ​​R из Jupyter Notebook.

Комментируя каждую строку сразу, я сократил число ответственных за ошибку до следующих:

P1 <- ggplot(data=x, aes(x=Lf_per_tree, y=Section, fill=Section, col=Section)) +
geom_jitter() +
scale_fill_manual("", values=Colors) +
scale_color_manual("", values=Colors)

Если я удалю scale_colorфункций, сюжет работает просто отлично, так что должно быть так.Поскольку я использовал их много раз в своем шаблоне, я подозреваю, что между x, объявленным в data=, и Colors, объявленным в scale_fill/color, что-то не так.

Вот так head(x) выглядит так:

   Lf_per_tree   Section
1            7         A
2            5         B
.....

Вот так Colors выглядит так:

$A
[1] "black"

$B
[1] "#C4B3A2"
.....

scale_color_manual и scale_fill_manualфункции на графике в основном берут то, что объявлено в aes() в пределах ggplot() (столбец «Раздел»), и преобразуют это в цвет, используя список Colors.

Это всегда работало до сих пор, и я понятия не имею, почему.Просто кажется, что эта проблема очень близка к моей, но я не мог решить ее так, как они это делают.

Кто-нибудь знает что-нибудь об этом?

1 Ответ

0 голосов
/ 26 февраля 2019

Публикация для будущих читателей:

После некоторой обработки я обнаружил, что проблема заключается в следующем.

scale_color_ функции не хотят list() в качестве ввода для преобразования имен, скорееони хотят character().

Если у вас есть список цветов, таких как мой, вам нужно unlist(), чтобы получить его в нужном формате.

...