我正确情节的快照,以及对其行为的质疑。
我遇到的问题如下:我有两个数据集(在这种情况下,我使用高图中的口袋妖怪数据集作为源,并从中生成第二个数据集)。
我想按类型绘制一些平均值(但是在单一颜色中),然后在顶部添加相同类别的第二系列点,再次以单一颜色添加。绘制图表很简单,但显示图例已经证明不是。
以下是我对这个问题的最终解决方案,它给出了我追求的情节行为。我想知道的是为什么我不能使用scale_color_manual对我的点做同样的事情(即改变我的点的颜色,并覆盖我的图例的标题),就像我对带有scale_fill_manual的框一样?如果我从创建点的行中删除colour="orange"
,即使我包含我认为应将其更改为黄色的第二段代码,它们也会恢复为默认黑色。在这种情况下,scale_color_manual不会引用我的观点,如果是,为什么?
library(highcharter)
library(dplyr)
myData <- pokemon
myData <- myData %>% mutate(type_1 = factor(type_1))
myList2 <- myData %>%
group_by(type_1) %>%
summarise(
meanHeight = mean(height),
meanWeight = mean(weight),
meanAttack = mean(attack)
)
ggplot(data = pokemon, aes(x=factor(type_1), y=defense)) +
geom_boxplot(aes(fill="")) +
geom_point(data=myList2, aes(x=type_1, y=meanAttack, shape=""), colour =
"orange") +
coord_flip() +
theme(panel.background = element_blank()) +
labs(x = "Pokemon Main Type", y = "Defense value", title = "My pokemon
plot", subtitle = "with a subtitle",
fill = "Type", shape = "Mean Attack",
caption = "data (c) the highcharter package") +
guides(fill=guide_legend(override.aes=list(shape=""))) +
scale_fill_manual('Pokemon types',
values = 'lightblue',
guide = guide_legend(override.aes = list(alpha = 1)))
什么都不做的代码是:
+ scale_color_manual('mylegend', ## this does nothing
values = c('yellow'),
guide = guide_legend(title="this", override.aes =
list(alpha = 1)))
感谢您的任何见解。
答案 0 :(得分:0)
这里的主要问题是aes()
和scale_xx
命令之间的连接。当您将数据框的一列传递给美学时,例如aes(fill = type_1)
,ggplot会检查该列的所有值,以确定应如何表示填充。在这种情况下,“type_1”是分类的,因此ggplot将应用其默认的分类色调比例及其默认着色。要更改这些颜色,您可以使用scale_fill_manual
并指定颜色列表。
相反,如果您只想将数据片段设置为一种颜色,则应在aes()
之外指定,geom_point(color = 'orange')
。无需包含缩放功能。但是既然还想要在你的图例中出现标签,我们需要稍微欺骗ggplot:
ggplot(data= pokemon, aes(x = factor(type_1), y = defense)) +
geom_boxplot(fill = 'lightblue') +
geom_point(data = myList2, aes(x = type_1, y = meanAttack, color = 'Mean Attack')) +
coord_flip() +
scale_color_manual(values = 'orange') +
labs(color = NULL, x = 'Pokemon Main Type') +
theme_bw()
在这里,我们将ggplot传递给一个具有一个值的“审美”:“平均攻击”。由于颜色现在与美学相关联,因此您可以在scale_color_manual
中对其进行影响,并且它会在图例中显示,并进行适当标记。