ggplot2中是否有等價物來繪製這個數據集?我使用matplot,並讀取qplot可以使用,但它確實不起作用。 ggplot/matplotmatplot的ggplot等效
data<-rbind(c(6,16,25), c(1,4,7), c(NA, 1,2), c(NA, NA, 1))
as.data.frame(data)
matplot(data, log="y",type='b', pch=1)
ggplot2中是否有等價物來繪製這個數據集?我使用matplot,並讀取qplot可以使用,但它確實不起作用。 ggplot/matplotmatplot的ggplot等效
data<-rbind(c(6,16,25), c(1,4,7), c(NA, 1,2), c(NA, NA, 1))
as.data.frame(data)
matplot(data, log="y",type='b', pch=1)
您可以創建在ggplot類似的情節,但你需要首先做一些數據整形。
library(reshape2)
#ggplot needs a dataframe
data <- as.data.frame(data)
#id variable for position in matrix
data$id <- 1:nrow(data)
#reshape to long format
plot_data <- melt(data,id.var="id")
#plot
ggplot(plot_data, aes(x=id,y=value,group=variable,colour=variable)) +
geom_point()+
geom_line(aes(lty=variable)) +
scale_y_log10(breaks=c(1,2,5,10,25))
我的輸出:
嘗試autoplot.zoo
。 (續下面圖)
library(ggplot2)
library(zoo)
autoplot(zoo(data), facet = NULL) + geom_point()
,並提供:
注意,如果data
有列名的時候,傳說會使用它們。另外如果想要不同的線路類型,請附加+ aes(linetype = Series)
。如果需要log10 y軸,則附加+ scale_y_log10()
。
謝謝這是工作得很好,只是一個小規模校正關於規模:你必須添加'scale_y_log10()' – catindri
是的,已修復。 –
你也可以不用外部包,如果你想:
data <- rbind(c(6,16,25), c(1,4,7), c(NA, 1,2), c(NA, NA, 1))
# set some names (not necessary- helps understand the code):
rownames(data) <- 1:4
colnames(data) <- LETTERS[1:3]
data
A B C
1 6 16 25
2 1 4 7
3 NA 1 2
4 NA NA 1
# convert to data.frame:
d <- as.data.frame.table(data)
d
Var1 Var2 Freq
1 1 A 6
2 2 A 1
3 3 A NA
4 4 A NA
5 1 B 16
6 2 B 4
7 3 B 1
8 4 B NA
9 1 C 25
10 2 C 7
11 3 C 2
12 4 C 1
ggplot(d, aes(x = Var1, y = Freq, group = Var2, colour = Var2)) +
geom_point() +
geom_line(aes(lty = Var2)) +
scale_y_log10(breaks = c(1,2,5,10,25))
出於好奇,什麼是'as.data.frame(數據)的目的,'在你上面的代碼? – 2015-06-22 10:12:35
我犯了一個錯誤!對不起,我刪除了我的評論(我以爲你是在問數據!)我把'as.data.frame(data)'因爲它似乎不能只用矩陣工作,但可能它不是有用的 – catindri
matplot *是*對於矩陣(和向量,請參閱?matplot)。問題在於你沒有將'as.data.frame(data)'中的調用分配給任何變量(尤其是'data')。所以如果你在你的代碼中這樣做,它實際上什麼都不做。由於其他原因稍後消失,可能還沒有工作。 – ddiez