使用scale_color_manual时,替换项具有[x]行,数据具有[y]

时间:2019-02-26 16:17:11

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

我正在使用ggplot2 n R 3.2.3进行绘图,该模板已经成功使用了很长时间。我现在遇到与hereherereplacement 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函数,那么该图就可以正常工作,因此必须是那些。但是,由于我在模板中多次使用它们,因此我怀疑在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_manualscale_fill_manual函数基本上采用aes()(列“ Section”)中ggplot()中声明的内容,并使用列出Colors

这一直到现在都有效,我不知道为什么。单凭感觉,this issue似乎很接近我,但我无法像他们在那里那样解决。

有人知道吗?

1 个答案:

答案 0 :(得分:0)

发布给将来的读者

经过一番修补,我发现问题出在下面。

$dateTime = Carbon::parse('2019-03-30 17:34:50', 'Europe/London'); $testTime = '16:00:00'; list ($hour, $minute, $second) = explode(':', $testTime); $nextTimeOccurrence = $dateTime ->copy() // Carbon 1 only ->hour($hour)->minute($minute)->second($second); if ($dateTime->gt($nextTimeOccurrence)) { $nextTimeOccurrence = $nextTimeOccurrence->addDay(); } // $nextTimeOccurrence is the next occurrence of $testTime after $dateTime 函数不希望scale_color_作为名称转换的输入,而是希望list()

如果有诸如我的颜色的列表,则必须character()使其以正确的格式显示。