我是ggplot的新手 . 我试图了解如何使用ggplot . 我正在读Wickham的书,仍然试图围绕绘图与设置颜色 .
A) Discrete case 这是我做的:
library(dplyr)
library(ggplot2)
test<-filter(mpg,year==2008)
test<-test[1:10,]
grid <- data_frame(displ = seq(min(mpg$displ), max(mpg$displ), length = 50))
mod <- loess(hwy ~ displ, data = mpg)
grid$hwy <- predict(mod, newdata = grid)
a)使用离散值然后使用(aes(color =“xyz”))
ggplot(mpg,aes(displ,hwy)) +
geom_point() +
geom_text(data = test,aes(label=trans,color = "blue"))
这只是添加了一个带有“蓝色”标签的图例 . 为什么会这样?
b)在美学之外提供颜色=“蓝色” .
ggplot(mpg,aes(displ,hwy)) +
geom_point() +
geom_text(data = test,aes(label=trans),color = "blue")
这样可以将颜色更改为“蓝色” .
B) Continuous case
a)使用(aes(color =“xyz”))这是我做的:
ggplot(mpg,aes(displ,hwy)) +
geom_point() +
geom_line(data = grid, aes(colour = "green"),size=1.5)
与案例a)一样,对于离散情况,这会添加一条粉红色的线条,文字为“绿色”
b)提供美学之外的颜色 .
ggplot(mpg,aes(displ,hwy)) +
geom_point() +
geom_line(data = grid, colour = "green",size=1.5)
这里,线的颜色确实变为“绿色”,我丢失了标签 .
所以,我不理解aes的 Value (color =“xyz”) . 它所做的就是添加一个标签 . 不是吗?我们为什么要用它?
1 回答
数据 - 数据列或数据列的转换,进入
aes()
. 当你执行aes(color = 'blue')
时,就好像你的数据有一个未命名的列,每一行都有字符串"blue"
.在这种情况下,
"blue"
不是一种颜色 - 它只是一个字符串 . 如果使用color = "green",
,color = "bleu"
或color = "look at this long long label"
,如果这些结果在aes()
内,您将得到相同的结果(标签除外) .字符串 - 即使它只有一个值 - 将被强制转换为一个因子并被视为离散变量 .
如果您不遵循一般规则,这可能会造成混淆: don't put constants inside aes() - only put mappings to actual data columns.
你似乎对连续和离散色标感到困惑 . 当你谈到颜色时,你标记为"continuous case"的东西仍然是离散的 . 使用
geom_point
或geom_line
,平滑的geom或任何其他geom不会使颜色离散或连续 . 选择离散或连续色标唯一重要的是映射到颜色的数据类型(class
) . 如果是数字,则默认色标将是连续的 . 如果它不是数字,则默认色标将是离散的 .