按行绘制矩阵,用其他列值R着色和虚线

时间:2014-10-31 19:22:27

标签: r matrix plot ggplot2

我有一个7列的矩阵,大约30行。前两列是字符串的分类变量,第一列是地名(例如:旧金山),第二列是Y / N值。每个其他列对应于一年(2006年,2008年等),并包含与年份(col)和地点(行)对应的值。

我需要制作一个每行有一行的图,它们根据地名进行着色(如果有两行都属于旧金山,它们应该是相同的颜色),并且根据虚线或实线表示到Y / N值。

我在R工作 - 我应该使用ggplot,matplot,plot还是其他情节包?我几乎可以在matplot中使用它,但是获得颜色和潇洒工作的微妙之处似乎是不可能的。

这里或多或少的数据是什么样的(通常有NaN值):
colnames - location,YorN,2006,2008,2009,2011,2012
第1行 - "旧金山"," Y",0.1,5.2,3.5,6,NaN
第2行 - "旧金山"," N",3,7.1,2.2,NaN,1
第3行 - "纽约"," Y",4.2,4.5,NaN,1.1,2
第4行 - "纽约"," N",2,NaN,2.1,4.9,6.7

1 个答案:

答案 0 :(得分:1)

 dd <- read.csv(text='
       location, YorN, 2006, 2008, 2009, 2011, 2012
       "San Francisco", "Y", 0.1, 5.2, 3.5, 6, NaN
       "San Francisco", "N", 3, 7.1, 2.2, NaN, 1
        "New York", "Y", 4.2, 4.5, NaN, 1.1, 2
        "New York", "N", 2, NaN, 2.1, 4.9, 6.7')

 library("ggplot2"); theme_set(theme_bw())
 library("reshape2")
 ddm <- melt(dd)  ## uses factor columns as ID variables
 ## convert year back to numeric (alternatively, use check.names=FALSE
 ## in read.csv())
 ddm <- transform(ddm,year=as.numeric(gsub("^X","",variable)))
 ggplot(ddm,aes(x=year,y=value))+
      geom_line(aes(colour=location,linetype=YorN))