• R语言
  • 请教:为什么R语言我用lines()不能在已有的图上添加新的图呢?

我的数据如下:

Mat Year Pri

A 2007 324.79

A 2008 357.26

A 2009 410.26

A 2010 401.71

A 2011 397.44

A 2012 363.25

A 2013 363.25

A 2014 366.67

B 2007 717.95

B 2008 789.74

B 2009 769.23

B 2010 897.44

B 2011 888.89

B 2012 805.13

B 2013 805.13

B 2014 745.3

我想把A和B根据年份的价格变化放在一个图上显示,请教大虾门,怎样写Code会比较好点呢?如果A、B后面还有几万条数据,又要怎么写呢?[s:12][s:12]

如果使用R自带Graphics可以这样

<br />
d <- read.table(textConnection("<br />
Mat  Year	Pri<br />
A	2007	324.79<br />
A	2008	357.26<br />
A	2009	410.26<br />
A	2010	401.71<br />
A	2011	397.44<br />
A	2012	363.25<br />
A	2013	363.25<br />
A	2014	366.67<br />
B	2007	717.95<br />
B	2008	789.74<br />
B	2009	769.23<br />
B	2010	897.44<br />
B	2011	888.89<br />
B	2012	805.13<br />
B	2013	805.13<br />
B	2014	745.3<br />
"),header=T)</p>
<p>plot(Pri ~ Year, data = d, type = "n")<br />
lines(Pri ~ Year, data = subset(d, Mat == 'A'), col = 'blue')<br />
lines(Pri ~ Year, data = subset(d, Mat == 'B'), col = 'red')<br />
</p>

回复 第2楼 的 beader:如果我有几万个A、B、C...,这样添加不是很麻烦?有没有语句可以一次性搞定呢?另外,如果我对A、B、C、D...等有个 分类项的话,是不是可以通过分类(Group)来一次性画出一个分类的图呢?

例如,

Mat Year Pri Group

A 2008 5765.69 2

A 2009 5765.69 2

A 2009 5304.43 2

A 2009 5145.3 2

A 2010 7848.72 2

A 2011 7770.23 5

A 2011 7979.46 5

A 2011 7537.12 5

A 2012 7424.06 5

A 2012 7386.38 5

A 2013 7386.38 5

A 2014 7238.65 5

B 2011 33000 4

B 2011 32010 4

B 2012 31529.85 4

B 2012 31049.7 4

B 2013 31049.7 4

C 2008 5035.9 3

C 2009 5035.9 1

C 2009 5145.3 1

C 2010 5379.41 1

C 2010 5035.9 1

C 2010 5145.3 1

C 2010 5238.94 1

C 2011 5238.94 1

C 2011 5369.91 1

C 2012 5569.01 1

C 2012 5564.1 1

D 2008 5355.9 3

D 2009 5355.9 1

D 2009 5170.94 1

D 2010 5406.22 1

D 2010 540622 1

D 2010 5355.9 1

D 2010 5170.94 1

D 2010 5265.05 1

D 2011 5265.05 1

D 2011 5396.68 1

D 2012 5462.62 1

D 2012 5461.54 1

E 2009 14051.3 4

E 2009 12786.32 4

E 2009 13176.92 4

E 2010 13690.82 4

E 2010 13382.48 4

E 2011 13248.66 4

E 2011 12851.2 4

E 2012 12658.43 4

E 2012 12465.66 4

E 2013 12465.66 4

F 2009 14051.3 4

F 2009 12786.32 4

F 2010 13326.55 4

F 2010 13002.41 4

F 2011 12872.38 4

F 2011 12486.21 4

F 2012 12298.92 4

F 2012 12111.62 4

F 2013 12111.62 4

G 2011 37688.03 4

G 2011 35239.32 4

G 2012 34710.73 4

G 2012 34182.14 4

G 2013 34182.14 4

H 2013 10290.6 3

H 2014 9776.07 3

I 2013 7063.38 3

I 2014 6710.21 3

J 2013 8107.31 3

J 2014 7701.94 3

K 2013 7366.45 3

K 2014 6998.13 3

K 2013 7366.45 3

K 2014 6998.13 3

L 2013 8107.31 3

L 2014 7701.94 3

M 2012 35239.32 4

M 2012 34710.73 4

M 2012 34182.14 4

M 2013 34182.14 4

我来回答一下原因,或不出来是因为你的数据没有显示,A和B明显pri范围差别太大了,用ggplot2解决这个正好

<br />
d <- read.table(textConnection("<br />
Mat  Year    Pri<br />
A    2007    324.79<br />
A    2008    357.26<br />
A    2009    410.26<br />
A    2010    401.71<br />
A    2011    397.44<br />
A    2012    363.25<br />
A    2013    363.25<br />
A    2014    366.67<br />
B    2007    717.95<br />
B    2008    789.74<br />
B    2009    769.23<br />
B    2010    897.44<br />
B    2011    888.89<br />
B    2012    805.13<br />
B    2013    805.13<br />
B    2014    745.3<br />
"),header=T)<br />
library(ggplot2)<br />
ggplot(data=d,aes(x=Year,y=Pri,group=Mat,color=Mat))+geom_point()<br />
</p>