绘制矩阵的具体方法(包括图片)

时间:2014-01-31 21:50:38

标签: r plot

我想绘制一个相当小的矩阵(4乘5),如图所示 - 请参阅

enter image description here

(它是某个指标的短时间序列,由w + x + y + z组成。对于第1年,表示为“a”的指标值等于w_1 + x_1 + y_1 + z_1。)\

有什么想法如何策划这样的事情?也许绘制这种数据不是一个好主意。另一方面,它并不是那么糟糕的imo。它肯定比5个直方图更好,甚至更糟糕,5个饼图。 \

OT:你知道任何有高级R图例子的网站或文件吗?谷歌发现了简单的情节。

编辑:数据示例(向量w / x / y / z已经表示为百分比)

w <- (0.1,0.15,0.1,0.1,0.3)
x <- (0.15,0.15,0.1,0.1,0.25)
y <- (0.15,0.10,0.2,0.2,0.05)
z <- (0.6,0.6,0.6,0.6,0.4)
abcd <- (222222,333333,444444,500000,555555)

2 个答案:

答案 0 :(得分:1)

根据您提供的图片和信息,我无法确切地告诉您图中右侧发生了什么,但是您使用来自ggplot2的geom_area很容易看出您显示的相对丰富图。以下是如何从您提供的数据中获取它:

首先,您的数据应该以长格式显示在单个数据框中,这对于重塑包很容易。您还应为每个观察添加显式时间值:

df<-data.frame(w,x,y,z)
library(reshape)
df<-melt(df)
df$year<-rep(c(1:5),4)

现在可以轻松地将数据绘制为相对丰度图:

library(ggplot2)
ggplot(df,aes(x=year,y=value,group=variable))+geom_area(aes(fill=variable))

这或多或少是你想要做的吗?如果我只是部分回答或误解了你的问题,我很抱歉 - 正如我所说,我仍然不能完全确定你在图片中寻找的是什么。

答案 1 :(得分:0)

这似乎非常接近你的图形。

# your sample data
w <- c(0.1,0.15,0.1,0.1,0.3)
x <- c(0.15,0.15,0.1,0.1,0.25)
y <- c(0.15,0.10,0.2,0.2,0.05)
z <- c(0.6,0.6,0.6,0.6,0.4)
df  <- rbind(w,x,y,z)

library(reshape2)
library(ggplot2)
library(scales)
gg <- melt(df)
ggplot(gg) + 
  geom_bar(aes(x=Var2, y=value, fill=Var1), stat="identity")+
  scale_y_continuous(labels = percent)+
  scale_fill_discrete("") + labs(x="Year", y="")

您的数据采用所谓的“宽格式”,这意味着不同的年份位于不同的列中。为了便于绘图,需要使用melt(...)将其转换为“长格式”。在gg中,所有值都在一列中(称为values),并且有一个新列指示它最初来自哪个列(此处称为Var2)。列Var1包含原始行名称。

ggplot来电执行以下操作:

ggplot(gg)    establishes gg as the reference dataset
geom_bar(...) tells ggplot what to use for the x and y axes, and for colors
sacle_y...    tells ggplot to use percent for the y-axis tick marks
scale_fill... tells ggplot to turn off the legend label
labs(...)     tells ggplot how to label the axes.