ggplot相当于matplot

时间:2015-06-22 10:08:53

标签: r ggplot2

ggplot2中是否有等价物来绘制此数据集?我使用matplot,并读取可以使用qplot,但它确实不起作用。 ggplot/matplot

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)

plot columns / each line

3 个答案:

答案 0 :(得分:12)

试试autoplot.zoo。 (续下图)

library(ggplot2)
library(zoo)

autoplot(zoo(data), facet = NULL) + geom_point()

,并提供:

screenshot

请注意,如果data有列名,那么图例就会使用它们。如果需要不同的线型,则追加+ aes(linetype = Series)。如果需要log10 y轴,则追加+ scale_y_log10()

答案 1 :(得分:8)

你可以在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))

我的输出: enter image description here

答案 2 :(得分:1)

如果您愿意,也可以在没有外部包的情况下执行此操作:

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))