簡體   English   中英

是否可以在ggplot2堆疊欄中放置堆疊之間的空間?

[英]Is it possible to put space between stacks in ggplot2 stacked bar?

我從這里舉這個例子

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創建堆疊的條形,如下圖所示? 我不想通過不同的顏色來區分堆棧。

在此處輸入圖片說明

編輯:基於Pascal的評論,

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

在此處輸入圖片說明

我的酒吧還有白色邊框。

這是我最接近您的示例圖的位置。 除了您已經排序的內容外,它並沒有太大的改進,但是對灰色背景上的白色條形邊框的強調較少。

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

該解決方案的一個問題是將看不到很小的組(例如,當Rank = 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")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM