我有下表,它按月(列)给出每年(行)的地震次数。
> tmp=table(quakes$year,quakes$mon)
> tmp
0 1 2 3 4 5 6 7 8 9 10 11
1973 388 453 451 508 375 533 496 392 349 424 400 406
1974 386 384 385 388 456 414 491 501 385 432 354 420
1975 435 374 397 439 449 629 461 434 386 404 440 470
1976 677 478 474 430 612 514 561 533 600 485 463 481
1977 453 355 508 519 460 477 416 541 449 523 585 489
1978 499 449 730 533 550 578 524 480 535 458 526 566
1979 485 444 771 662 705 661 590 597 514 635 549 549
1980 530 530 668 654 969 779 668 472 452 614 549 463
1981 501 506 545 547 538 524 662 587 690 561 518 650
1982 655 527 632 602 630 658 603 639 640 761 628 772
1983 909 683 775 847 1028 743 823 902 727 770 793 842
1984 798 732 872 943 795 721 782 820 994 947 1056 1033
1985 1016 839 1140 1078 1146 989 1066 1136 1095 1115 1162 1333
1986 1050 867 1217 944 1368 1046 1256 1035 912 1086 1066 871
1987 834 860 1003 884 891 871 959 943 952 1022 1035 1036
1988 990 957 1127 1123 1121 975 1095 1160 929 1079 1092 1063
1989 1133 1106 1144 1297 1235 1060 1175 1312 1200 1458 1137 1305
1990 1247 1176 1404 1489 1431 1321 1713 1496 1160 1277 1307 1569
1991 1476 1226 1369 1388 1387 1380 1327 1378 1253 1530 1301 1469
1992 1362 1292 1622 1715 1915 1649 1941 1722 1518 1501 1653 1634
1993 1435 1428 1821 1691 1970 1767 2502 1957 1903 1852 1628 1522
1994 2095 1409 1466 1520 1760 1702 1473 1494 1625 1889 1673 1265
1995 1656 1590 1444 1798 1931 1691 1445 1574 1640 2005 1917 2316
1996 2297 2310 1513 1290 1335 1675 1545 1450 1615 1604 1690 1614
1997 1441 1570 1890 1919 1618 1269 1582 1463 1463 1645 1892 2120
1998 1905 1592 1773 2021 2068 1786 1971 1776 1724 1749 1761 1562
1999 1752 1740 2093 1713 2145 1891 1679 1628 1487 1799 1584 1321
2000 1451 1340 1587 1702 1710 1941 2221 2125 1724 1863 2735 1857
2001 1945 2007 1856 2091 1724 2091 2039 1915 1817 2124 1917 2008
2002 2101 1996 2291 2202 1981 2126 2001 2091 2733 2411 3316 2205
2003 2053 2139 2604 2475 2526 2950 2655 2841 3030 2794 2709 2643
2004 2680 2861 2866 2692 3157 2767 2090 2274 2313 2168 2449 2883
2005 3253 2096 2842 3028 2562 2492 2340 2215 2347 2887 2176 2245
2006 2086 2007 2509 2739 2738 2445 2548 2405 2157 2399 3128 2407
2007 2822 1954 2361 3206 2351 2257 2566 2779 2682 2324 2072 2311
2008 2333 2666 2732 2595 3303 3024 2743 2795 2096 2726 2337 2427
2009 1512 1266 1223 1171 1124 1158 1162 1355 1112 1623 1085 1034
2010 1371 1630 2032 2120 1402 1419 2747 1885 1548 1550 1651 2186
然后按照两个命令给我两个不同的图,第一个是1973年的时间序列,第二个是2010年的时间序列:
> dim(tmp)
[1] 38 12
> plot(tmp[1,], type="l")
> plot(tmp[38,], type="l")
我想在同一个情节中组合并显示这两个时间序列。有没有办法在同一个图上绘制上表中的行,同时按年份(行标签)识别每个时间序列?
答案 0 :(得分:1)
作为一般规则,我尽量不使用表格绘图,即使一个人以这种方式阅读数据也是有意义的。
library(ggplot2)
ggplot(data.frame(tmp)) +
geom_line(aes(x = Var2, y = Freq, group = Var1, col = Var1))
ggplot2
库对于这种群体绘图练习非常有用,尽管可能需要一些输入才能适应。
调用Var1
和Var2
(我将table
强制转换为data.frame
时创建的)可能是个坏主意。您可以通过首先聚合quakes
数据框,然后在其上调用绘图来避免这种情况。
答案 1 :(得分:1)
matplot
对这类事情有好处:
反转表格的行和列:
tmp <- table(quakes$mon,quakes$year)
# 1973 1974 1975 1976 1977 1978
#0 388 386 435 677 453 499
#1 453 384 374 478 355 449
#2 451 385 397 474 508 730
#3 508 388 439 430 519 533
#etc
然后使用matplot:
vars <- c(1,6)
matplot(tmp[,vars], type="l", lty=1)
legend("topright", colnames(tmp)[vars], lty=1, col=seq_along(vars))