r - 如何将纯色应用于ggplot线
问题描述
我正在寻找一种使用 ggplot2 打印不同颜色的不同线条的方法。我不知道为什么当我用变量作为颜色打印图表时它会起作用,但是当我在我的东方伦理中设置纯色时,我得到一个错误
Error: Discrete value supplied to continuous scale
错误来源在注释中注明
X3500um_0to50_tx2rx1 X15_30_45_rx2tx2 <- data.frame(
Time = c(2020-11-03 15:20:00, 2020-11-03 15:20:01),
Diff_Touchpad0_Rx1_Tx2= c(2782, 27804),
Diff_Touchpad0_Rx2_Tx0= c(2782, 27804),
Diff_Touchpad0_Rx2_Tx1= c(2782, 27804),
Diff_Touchpad0_Rx2_Tx2= c(2782, 27804))
ggplot(X3500um_0to50_tx2rx1, aes(Time, Diff_Touchpad0_Rx1_Tx2)) +
geom_line(aes(colour = Diff_Touchpad0_Rx1_Tx2)) +
geom_line(aes(Time, Diff_Touchpad0_Rx2_Tx0)) +
geom_line(aes(Time, Diff_Touchpad0_Rx2_Tx1, colour = "red")) + #causes an error??
geom_line(aes(Time, Diff_Touchpad0_Rx2_Tx2, colour = Diff_Touchpad0_Rx2_Tx2))
解决方案
错误是因为您将一个不存在的变量“红色”传递给colour
美学。美学本质上是视觉效果。美学的语法是aes = variable
. 生成错误是因为您的数据框中没有名为“red”的变量。colour = Diff_Touchpad0_Rx2_Tx2
之所以有效,是因为您在数据中调用Diff_Touchpad0_Rx2_Tx2
了一个变量,因此 R 会根据该变量的值自动分配颜色级别。因为你的特性red
是全局的,所以应该在aes
. 因此,以下代码应该会产生您要查找的内容:
if(!require(tidyverse)) install.packages('tidyverse'); library(tidyverse)
if(!require(parsedate)) install.packages('parsedate'); library(parsedate)
X3500um_0to50_tx2rx1 <- data.frame(
Time = c(parse_iso_8601("2020-11-03T15:20:00"),
parse_iso_8601("2020-11-03T15:20:01")),
Diff_Touchpad0_Rx1_Tx2= c(2782, 27804),
Diff_Touchpad0_Rx2_Tx0= c(2782, 27804),
Diff_Touchpad0_Rx2_Tx1= c(2782, 27804),
Diff_Touchpad0_Rx2_Tx2= c(2782, 27804))
ggplot(X3500um_0to50_tx2rx1, aes(Time, Diff_Touchpad0_Rx1_Tx2)) +
geom_line(aes(colour = Diff_Touchpad0_Rx1_Tx2)) +
geom_line(aes(Time, Diff_Touchpad0_Rx2_Tx0)) +
geom_line(aes(Time, Diff_Touchpad0_Rx2_Tx1), colour = "red")
我还推荐@eipi10 建议的读数。
推荐阅读
- android - Android ConstraintLayout - 如何将视图移动到占用空间?
- chapel - 教堂领域:`low/high` 和 `first/last` 方法之间的区别
- java - 使用 useDelimiter() 连接子字符串
- docker - dashDB 容器部署期间的致命运行时错误
- python - 如果dict没有键或值为空,python返回None
- vb.net - Renci.SSHnet.Sftp 超时错误
- xcode - AndroidDeveloper 可以像 XCode 的 // MARK: - ... 做任何事情吗?
- c# - 如何让 RabbitMQ 从队列中一一读取?
- javafx - 如何在 JavaFX 中获取特定类型的最后一个孩子?
- matlab - Matlab刷新标准输出[不是`drawnow('update')`]?