我要进行一系列不同的研究,我想使用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中映射颜色时,我得到了正确的线,每条线都有不同的颜色-这不是我想要的。 但是,当我使用“学习”时,线条会折叠成锯齿状的图案,如下所示。情节在这里:
有人知道如何解决这个问题,以便获得具有相同颜色的线组(这两个图之间的中途距离)?