【问题标题】:Replacement has [x] rows, data has [y] when using scale_color_manual替换有 [x] 行,使用 scale_color_manual 时数据有 [y]
【发布时间】:2019-02-26 16:17:10
【问题描述】:

我正在使用 ggplot2 n R 3.2.3 进行绘图,并使用我已经成功使用了很长时间的模板。我现在遇到与herehere (replacement has %d rows, data has %d) 相同的错误。

与我使用它的其他时间的唯一区别是我使用 Jupyter Notebook 的 R 内核制作情节。

一次注释每一行,我将导致错误的原因减少到这些:

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 函数,情节就可以正常工作,所以一定是那些。由于我在我的模板中多次使用它们,我怀疑在data= 中声明的x 和在scale_fill/color 中声明的Colors 之间存在某些问题。

这就是head(x) 的样子:

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

Colors 是这样的:

$A
[1] "black"

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

图中的scale_color_manualscale_fill_manual 函数基本上采用ggplot()(“Section”列)中aes() 中声明的内容,并使用列表Colors 将其转换为颜色。

直到现在这一直有效,我不知道为什么。仅凭感觉,this issue 似乎与我的非常接近,但我无法像他们那样解决它。

有人知道吗?

【问题讨论】:

    标签: r list ggplot2 aes scale-color-manual


    【解决方案1】:

    为未来的读者发帖:

    经过一番修改,我发现问题如下。

    scale_color_ 函数不希望 list() 作为名称转换的输入,而是希望 character()

    如果您有像我这样的颜色列表,您必须unlist() 才能获得正确的格式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-01
      • 1970-01-01
      • 2018-02-28
      • 2018-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-24
      相关资源
      最近更新 更多