2013-02-28 28 views
7

enter image description hereLô bội số (thời gian) chuỗi trong R với chú thích

Theo dữ liệu của tôi (xem hình) được gọi là GDP. Tôi muốn biết cách vẽ tất cả các quốc gia trong một biểu đồ. Và tôi muốn nhận được một huyền thoại cho mỗi quốc gia như màu sắc khác nhau trên mỗi dòng hoặc hình dạng khác nhau trên mỗi dòng.

tôi biết làm thế nào để vẽ một loạt, ví dụ:

ts.plot (GDP $ ALB)

Nhưng không biết làm thế nào để vẽ tất cả các series với một huyền thoại.

Cảm ơn bạn

+0

Bạn nên mẫu dữ liệu. –

+0

@geektrader Xin chào, xin lỗi, bạn có thể cho tôi biết thêm chi tiết mà tôi không hiểu. – S12000

+0

Một cách để có được cốt truyện mong muốn là sử dụng ggplot2 như được hiển thị [ở đây] (http: // stackoverflow.com/questions/13324004/plotting-multiple-time-series-in-ggplot) –

Trả lời

6

Nếu bạn sử dụng xts để tạo ra dữ liệu chuỗi thời gian, bạn có thể sử dụng plot.xts từ xtsExtra gói để có được kết quả mong muốn

#Uncomment below lines to install required packages 
#install.packages("xts") 
#install.packages("xtsExtra", repos="http://R-Forge.R-project.org") 

library(xts) 
library(xtsExtra) 

head(data) 
##    ABC DEF 
## 2007-01-03 83.80 467.59 
## 2007-01-04 85.66 483.26 
## 2007-01-05 85.05 487.19 
## 2007-01-08 85.47 483.58 
## 2007-01-09 92.57 485.50 
## 2007-01-10 97.00 489.46 


plot.xts(data, screens = factor(1, 1), auto.legend = TRUE) 

Bạn sẽ nhận được một cái gì đó như thế này enter image description here

Trong trường hợp bạn muốn dữ liệu trong các bảng riêng biệt:

plot.xts(data, auto.legend = TRUE) 

enter image description here

+1

+1 cho thay thế xts. – A5C1D2H2I1M1N2O1R2T1

+0

xts này là rất thú vị và đẹp trai nhưng tôi nhận được lỗi sau khi tôi cố gắng để cài đặt xtrsextra ... (hy vọng tôi có thể tìm thấy một thay thế ohter hơn tham gia một phiên bản R cũ ...): Cảnh báo trong install.packages: gói 'xtsExtra' không khả dụng (đối với phiên bản R 2.15.1) – S12000

+1

@ Swiss12000 bạn đã thử 'install.packages (" xtsExtra ", repos =" http://R-Forge.R-project.org ")' hoặc chỉ 'install.packages (" xtsExtra ")' –

4

Điều này thì sao ...?

> set.seed(1) 
> DF <- data.frame(2000:2009,matrix(rnorm(50, 1000, 200), ncol=5)) 
> colnames(DF) <- c('Year', paste0('Country', 2:ncol(DF))) 
> DF # this is how the data.frame looks like: 
    Year Country2 Country3 Country4 Country5 Country6 
1 2000 874.7092 1302.3562 1183.7955 1271.7359 967.0953 
2 2001 1036.7287 1077.9686 1156.4273 979.4425 949.3277 
3 2002 832.8743 875.7519 1014.9130 1077.5343 1139.3927 
4 2003 1319.0562 557.0600 602.1297 989.2390 1111.3326 
5 2004 1065.9016 1224.9862 1123.9651 724.5881 862.2489 
6 2005 835.9063 991.0133 988.7743 917.0011 858.5010 
7 2006 1097.4858 996.7619 968.8409 921.1420 1072.9164 
8 2007 1147.6649 1188.7672 705.8495 988.1373 1153.7066 
9 2008 1115.1563 1164.2442 904.3700 1220.0051 977.5308 
10 2009 938.9223 1118.7803 1083.5883 1152.6351 1176.2215 
> matplot(DF[,-1], col=1:ncol(DF), type='l', lty=1, ylim=range(DF), axes=FALSE) 
> axis(1, 1:nrow(DF), as.character(DF[,1])) 
> axis(2) 
> box() #- to make it look "as usual" 
> legend('topright', names(DF), col=1:ncol(DF), lty=1, cex=.65) 

enter image description here

+1

+1 để cung cấp một khuôn khổ mà những người khác có thể làm việc;) – A5C1D2H2I1M1N2O1R2T1

+0

Điểm quan trọng là nhận ra rằng các trục phải được vẽ riêng biệt. – jnas

5

Vay nặng nề từ Jilber, tôi đưa ra một biến thể nhẹ. Ở đây, sự căng thẳng là ở chỗ nó có thể tốt hơn để đối phó với các đối tượng chuỗi thời gian thực, vì điều đó thường sẽ cho phép bạn tự động nhận được các kiểu đầu ra mà bạn có thể quan tâm. Geektrader chỉ cho bạn cách thực hiện điều này với "xts "gói, nhưng bạn cũng có thể làm một số điều tương tự với cơ sở R.

Đây là phiên bản sửa đổi của dữ liệu mẫu của Jilber, nơi tôi đã chuyển đổi nó thành đối tượng ts.

set.seed(1) 
DF <- data.frame(2000:2009,matrix(rnorm(50, 1000, 200), ncol=5)) 
colnames(DF) <- c('Year', paste0('Country', 2:ncol(DF))) 
DF.TS <- ts(DF[-1], start = 2000, frequency = 1) 
DF.TS 
# Time Series: 
# Start = 2000 
# End = 2009 
# Frequency = 1 
#  Country2 Country3 Country4 Country5 Country6 
# 2000 874.7092 1302.3562 1183.7955 1271.7359 967.0953 
# 2001 1036.7287 1077.9686 1156.4273 979.4425 949.3277 
# 2002 832.8743 875.7519 1014.9130 1077.5343 1139.3927 
# 2003 1319.0562 557.0600 602.1297 989.2390 1111.3326 
# 2004 1065.9016 1224.9862 1123.9651 724.5881 862.2489 
# 2005 835.9063 991.0133 988.7743 917.0011 858.5010 
# 2006 1097.4858 996.7619 968.8409 921.1420 1072.9164 
# 2007 1147.6649 1188.7672 705.8495 988.1373 1153.7066 
# 2008 1115.1563 1164.2442 904.3700 1220.0051 977.5308 
# 2009 938.9223 1118.7803 1083.5883 1152.6351 1176.2215 

Bây giờ, đây là hai lựa chọn âm mưu cơ bản:

# Each country in a separate panel, no legends required 
plot(DF.TS) 

enter image description here

# All countries in one plot... colorful, common scale, and so on 
plot(DF.TS, plot.type="single", col = 1:ncol(DF.TS)) 
legend("bottomleft", colnames(DF.TS), col=1:ncol(DF), lty=1, cex=.65) 

enter image description here

+0

Cảm ơn bạn đã bình luận và upvote câu trả lời của tôi;) +1 cho lựa chọn thay thế của bạn –

6

Chỉ trong 2 dòng sử dụng ts.plot

ts.plot(time,gpars= list(col=rainbow(10))) 
    legend("topleft", legend = 1:10, col = 1:10, lty = 1) 

Kết quả: bội Lô (thời gian) loạt trong R với huyền thoại Plot multiples (time) series in R with legend

Các vấn đề liên quan