多行映射到同一颜色ggplot2 R

时间:2018-12-13 18:01:41

标签: r ggplot2

我要进行一系列不同的研究,我想使用ggplot在线图中进行比较,并按研究进行着色,每个研究都包含多个样本。我想要的输出图是由许多线组成的线图,这些线通过研究进行了着色,从而每种颜色都有与其关联的多条线。

我的数据是“宽”的,因此为了使用ggplot,我将其收集为长格式。我原始数据的示例是:

  Element Robinson Robinson.1      Price       Gale     Gale.1
1       1     17.5       25.2       23.3      27.15      25.92
2       2     15.0       20.8       18.7      21.76      20.39
3       3     11.8       15.4       14.8      15.77      14.97
4       4     10.2       13.5       12.1         NA         NA
5       5      8.0       11.4        9.7      10.91      10.33
6       6      8.8       11.4        9.7      10.33       9.87

(此结构可以显示不同的类别,如果需要,我可以提供整个数据集的dput版本,但是它相当长)

我的代码是:

library(ggplot2)
library(tidyr)
library(dplyr)

#Reshaping data into long form 
df <- alldata %>%
  select(Element, c(2:87)) %>%
  gather(key= "Analysis", value = "value", -Element)

#Adding a new column based on study name
df$Study <-
  ifelse(grepl("Robinson",df$Analysis)==TRUE,"Robinson",
         ifelse(grepl("MI",df$Analysis)==TRUE,"MI",
                ifelse(grepl("Price",df$Analysis)==TRUE,"Price",
                       ifelse(grepl("Gale",df$Analysis)==TRUE,"Gale",
                              "Other"))))

#Plotting making sure to interpolate between gaps
ggplot(df[!is.na(df$value),], aes(x=Element, y = value))+
  geom_line(aes(color=Analysis),size=1, show.legend=FALSE)+
  theme_bw()+
  scale_y_log10()

重塑数据可以使我得到一个长数据框,其中包含三列:“元素”,“分析”和“研究”。 “分析”为研究中的每个样本赋予唯一名称(例如Robinson1,Robinson2),“样本”从中提取研究。

我的问题是,当我使用“分析”在geom_line中映射颜色时,我得到了正确的线,每条线都有不同的颜色-这不是我想要的。  但是,当我使用“学习”时,线条会折叠成锯齿状的图案,如下所示。情节在这里:

plot 1

plot2

有人知道如何解决这个问题,以便获得具有相同颜色的线组(这两个图之间的中途距离)?

0 个答案:

没有答案