我有一个从PostgreSQL在csv中导出的表格,我想在R中创建一个堆积条形图。这是我在R的第一个项目。
这是我的数据和我想做的事情:
该地区某个提供商的支线公交服务的质量。对于列车的每个用户,我们根据列车站的公交车和列车之间的同步来分配服务质量,并计算具有理想或非常好的服务,正确服务,缺陷服务或没有服务的用户的百分比。完全(与gis.stackexchange中的问题相关联)
所以,这就像使用我的第一列作为我的x轴标签和我的标题作为我的类别。每行的数据已经标准化为100%。
在Excel中,只需点击几下,我就不介意输入几行代码,因为它是已经很长的plpgsql脚本的最终结果...我宁愿继续编码而不是移动到Excel(我还有很多要做的事)。
所以,我尝试使用Nathan Yau的“Visualize This”中的例子和“R in Action”中的例子来创建一个堆积条,并且不太成功。通常,他们的示例使用与R聚合的数据并使用它。我的已经汇总了。
所以,我终于想出了一些适用于R的东西:
但我不得不转换我的数据:
我必须转置我的表并删除我现在的行(前列)标识符。
这是我的代码:
# 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并得到相同的结果吗?
我在这里迷失了一点......
感谢!!!!
答案 0 :(得分:1)
您似乎手动转置了矩阵。这可以在R中使用t()
函数完成。
在as.matrix(stl)
行之后添加以下行:
stl_matrix <- t(stl_matrix)
答案 1 :(得分:1)
试用ggplot2
和reshape
库。您应该能够获得所需的图表
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')