在R中堆积的酒吧

时间:2013-11-01 14:46:24

标签: r csv graph

我有一个从PostgreSQL在csv中导出的表格,我想在R中创建一个堆积条形图。这是我在R的第一个项目。

这是我的数据和我想做的事情:

enter image description here

该地区某个提供商的支线公交服务的质量。对于列车的每个用户,我们根据列车站的公交车和列车之间的同步来分配服务质量,并计算具有理想或非常好的服务,正确服务,缺陷服务或没有服务的用户的百分比。完全(与gis.stackexchange中的问题相关联)

所以,这就像使用我的第一列作为我的x轴标签和我的标题作为我的类别。每行的数据已经标准化为100%。

在Excel中,只需点击几下,我就不介意输入几行代码,因为它是已经很长的plpgsql脚本的最终结果...我宁愿继续编码而不是移动到Excel(我还有很多要做的事)。

所以,我尝试使用Nathan Yau的“Visualize This”中的例子和“R in Action”中的例子来创建一个堆积条,并且不太成功。通常,他们的示例使用与R聚合的数据并使用它。我的已经汇总了。

所以,我终于想出了一些适用于R的东西:

enter image description here

但我不得不转换我的数据:

enter image description here

我必须转置我的表并删除我现在的行(前列)标识符。

这是我的代码:

# load libraries
library(ggplot2)
library(reshape2)

# load data
stl <- read.csv("D:/TEMP/rabat/_stl_rabattement_stats_mtl.csv", sep=";", header=TRUE)

# reshape for plotting
stl_matrix <- as.matrix(stl)

# make a quick plot
barplot(stl_matrix, border=NA, space=0.1, ylim=c(0, 100), xlab="Trains", ylab="%",
main="Qualité du rabattement, STL", las = 3)

有什么方法可以使用我原来的csv并得到相同的结果吗?

我在这里迷失了一点......

感谢!!!!

2 个答案:

答案 0 :(得分:1)

您似乎手动转置了矩阵。这可以在R中使用t()函数完成。

as.matrix(stl)行之后添加以下行:

stl_matrix <- t(stl_matrix)

答案 1 :(得分:1)

试用ggplot2reshape库。您应该能够获得所需的图表

stl$train_order <- as.numeric(rownames(stl))
stl.r <- melt(stl, id.vars = c("train_no", "train_order"))
stl.r$train_no <- factor(
    stl.r$train_no, 
    levels = stl$train_no[order(stl$train_order)])    
ggplot(stl.r, aes(x = factor(train_no), y = value, fill = variable)) + geom_bar(stat = 'identity')