我正在关注Wickham和Grolemund的第1章" R for data science"关于可视化。
我试过了:
ggplot(data = mpg) + geom_point(mapping = aes(x = displ, y = hwy), color = "blue")
希望能够获得所有点蓝色的情节,但令我惊讶的是,它们都是红色的!阅读正确的代码以获得蓝点,在印刷版的第11页或Section 3.3 of the online version中,我发现它应该是
chrome://flags/#enable-add-to-shelf
事实上,他们声明,要手动设置美学,你必须在aes()函数之外,但在相应的geom,geom_point()这里。为什么会这样?这种行为的确切解释是什么?事实上,对我来说,正确的语法是第一个命令之一似乎很自然。我猜这个问题与层和/或变量范围有关,但我无法得到它的悬念。有人会用勺子喂我吗?
编辑:很抱歉没有做正确的作业:这只是在相应章节末尾的文本中提出的练习1 ......但答案仍然让我感到厌烦。
答案 0 :(得分:3)
这个问题,更具体地说,两个提到的命令的输出差异在第2版" ggplot2的第5.4.2节中明确说明。数据分析的优雅图形",Hadley Wickham本人:
或者:
function showLng(tableId, x, y) {
var table = document.getElementById(tableId);
var row = table.insertRow(0);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
cell1.innerHTML = "";
cell2.innerHTML = x;
cell3.innerHTML = y;
}
内)美化,例如aes
或...... aes(..., color = VarX)
之外,但在aes
元素内)美学到常数值,例如"蓝色" 在第一种情况下,映射美学,例如geom
,ggplot2根据所有可用颜色的均匀平均值(在色轮上)选择颜色,因为映射变量的值是一切都不变;为什么选择的颜色与您选择映射的常数值一致?更明确地说,如果您尝试命令:
color
您可以获得与原始问题的第一个命令完全相同的输出图。
答案 1 :(得分:1)
我记得当我开始使用ggplot时,我对此感到非常困惑。
要以@Mauicio Calvao的答案为基础,请在color
内使用aes
,通过要绘制的data.frame变量来分解图中的颜色,例如:
ggplot(data = mpg) + geom_point(mapping = aes(x = displ, y = hwy, color = drv))
因此,当color
(或size
或linetype
或类似的东西)位于aes
内时,实际上是在问哪个对象\变量应该确定颜色组。如果这是一个字符串(例如"blue"
),那么它们都被赋予一个组,但是该组的名称与实际颜色无关。
要在color
内按aes
分组后分配颜色,请使用scale_color_manual
ggplot(data = mpg) + geom_point(mapping = aes(x = displ, y = hwy, color = drv))+
scale_colour_manual(values = c("black","blue","orange"))