ggplot2按行名称的第一个单词对数据进行分组,并为每个组分配一个调色板

时间:2019-05-02 18:08:10

标签: r ggplot2 colors group-by

我有以下数据框,咖啡馆:

cafe_type   X   Y
bread - white   354 1
bread - wheat   674 3
bread - rye 756 4
bread - sourdough   234 2
milk - cow  454 6
milk - soy  345 7
milk - almond   323 8
bagel - white   234 3
bagel - everything  453 4
bagel - wheat   556 6
bagel - egg 678 9

我使用以下图形绘制了这些数据:

ggplot(cafe, aes(X,Y)) + geom_point()

我想按行名称(即面包)中的第一个单词对数据进行分组,然后为每个组选择不同的调色板(即每个面包点是不同的橙色阴影,每个牛奶点是不同的颜色蓝色阴影,每个百吉饼都是绿色阴影)。我在使用group_by函数时遇到了错误,并且不确定如何继续。任何帮助将不胜感激!

谢谢, 杰西

1 个答案:

答案 0 :(得分:0)

我要解决的第一件事是将您的食物作为实际列放入data.frame中。

cafe$item <- factor(rownames(cafe), levels = unique(rownames(cafe)))

接下来,您将要构建图。在项目aes()中添加颜色。

ggplot(df, aes(X, Y, colour = item)) +
  geom_point() +
  scale_colour_manual(
    breaks = levels(cafe$item),
    limits = levels(cafe$item),
    values = c("orange", "darkorange", "orange2", "darkorange2",
               "dodgerblue", "blue", "deepskyblue",
               "limegreen","forestgreen","green","lawngreen")
  )

现在,棘手的一点是使食物的顺序正确无误,这是通过breaks内的limitsscale_colour_manual()完成的。要做的工作是为自己喜欢的食物选择颜色,但是您可以随意尝试颜色。这就是我的情节:

enter image description here

我不知道您的group_by()中的错误来自何处,但我认为您不需要它来制作情节。祝你好运!