如何在R中绘制以下内容?

时间:2012-11-26 21:06:48

标签: r plot

我是新来策划R所以我请求你的帮助。说我有以下矩阵。

mat1 <- matrix(seq(1:6), 3)
dimnames(mat1)[[2]] <- c("x", "y")
dimnames(mat1)[[1]] <- c("a", "b", "c")
mat1
  x y
a 1 4
b 2 5
c 3 6

我想绘制这个,其中x轴包含每个rowname(a,b,c),y轴是每个rowname的值(a = 1和4,b = 2和5,c = 3和6)。任何帮助将不胜感激!

|     o
|   o x
| o x
| x
|_______
  a b c

4 个答案:

答案 0 :(得分:12)

以下是使用基本图形的一种方法:

plot(c(1,3),range(mat1),type = "n",xaxt ="n")
points(1:3,mat1[,2])
points(1:3,mat1[,1],pch = "x")
axis(1,at = 1:3,labels = rownames(mat1))

enter image description here

编辑包含不同的绘图符号

答案 1 :(得分:10)

matplot()专为此格式的数据而设计:

matplot(y = mat1, pch = c(4,1), col = "black", xaxt ="n",
        xlab = "x-axis", ylab = "y-axis")
axis(1, at = 1:nrow(mat1), labels = rownames(mat1))             ## Thanks, Joran

enter image description here

答案 2 :(得分:6)

最后,一个点阵解决方案

library(lattice)
dfmat <- as.data.frame(mat1)
xyplot( x + y ~ factor(rownames(dfmat)), data=dfmat, pch=c(4,1), cex=2)

enter image description here

答案 3 :(得分:3)

你可以在基础图形中做到这一点,但是如果你要使用R远远超过这个,我认为值得了解ggplot2包。请注意ggplot2只占用数据帧 - 但是,将数据保存在数据帧而不是矩阵中通常更有用。

d <- as.data.frame(mat1) #convert to a data frame
d$cat <- rownames(d) #add the 'cat' column
dm <- melt(d, id.vars)
dm #look at dm to get an idea of what melt is doing

require(ggplot2)
ggplot(dm, aes(x=cat, y=value, shape=variable)) #define the data the plot will use, and the 'aesthetics' (i.e., how the data are mapped to visible space)
  + geom_point() #represent the data with points

enter image description here