12

ここからこの例を取り上げました:

DF <- read.table(text="Rank F1     F2     F3
1    500    250    50
2    400    100    30
3    300    155    100
4    200    90     10", header=TRUE)

library(reshape2)
DF1 <- melt(DF, id.var="Rank")

library(ggplot2)
ggplot(DF1, aes(x = Rank, y = value, fill = variable)) + 
geom_bar(stat = "identity")

ggplot2 を使用して、次のグラフのような積み上げ棒グラフを作成することはできますか? スタックを異なる色で区別したくありません。

ここに画像の説明を入力

編集:パスカルのコメントに基づいて、

ggplot(DF1, aes(x = Rank, y = value)) + 
geom_bar(stat = "identity",lwd=2, color="white")

ここに画像の説明を入力

バーの白い境界線がまだあります。

4

1 に答える 1

9

これは、あなたの例の図に最も近いものです。既に並べ替えたものを超える改善はありませんが、灰色の背景の白いバーの境界線はあまり強調されていません.

library(ggplot2)
p <- ggplot(DF1, aes(x = Rank, y = value, group = variable))
p <- p + geom_bar(stat = "identity", position = "stack", lwd = 1.5,
                  width = 0.5, colour = "white", fill = "black")        
p <- p + theme_classic()
p <- p + theme(axis.text.x = element_text(angle = 90, vjust = 0.5))
p

それは以下を生成します:

灰色の背景を維持したい場合は、背景のグリッドを削除しながら、その灰色の色合いを正確に見つけて、その色を線に使用できます (これは正しい色合いではありません)。

p <- ggplot(DF1, aes(x = Rank, y = value))
p <- p + geom_bar(stat = "identity", position = "stack", lwd = 1.5,
                  width = 0.5, colour = "grey", fill = "black")        
p <- p + theme(panel.grid = element_blank())
p

このソリューションの問題点は、非常に小さなグループが表示されないことです (たとえば、ランク = 4 変数 F3 = 10 の場合、この小さな値は白いバーのアウトラインで完全に覆われています)。

サンプルデータ:

DF1 <- structure(list(Rank = c(1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 
3L, 4L), variable = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 
3L, 3L, 3L, 3L), .Label = c("F1", "F2", "F3"), class = "factor"), 
    value = c(500L, 400L, 300L, 200L, 250L, 100L, 155L, 90L, 
    50L, 30L, 100L, 10L)), row.names = c(NA, -12L), .Names = c("Rank", 
"variable", "value"), class = "data.frame")
于 2015-05-01T05:14:47.307 に答える