已经有一段时间了。
我想绘制一个堆叠的条形图,在x轴上显示月份,在y轴上显示值。
我的数据框看起来像这样,但是我大约有90行。
编辑数据示例:
data <- data.frame(
x = sample(c("a","b"), 24, replace = TRUE),
y = sample(c("a","b","c","d"), 24, replace = TRUE),
z = sample(1:24)
)
我认为类似这样的方法应该可以起到近似作用。
[![在此处输入图片描述] [1]] [1]
数字变量的值将显示在条形图上,XDURAC值将显示为文本在条形图上。
基本上,我想要类似的图,但在行进的“ 19”栏上具有“ 19DURAC”值(例如5.04),而不是表示为条。
要制作此dfr adn图,我使用了以下代码:
durac_v3 <- durac_v2
library("reshape", lib.loc="~/R/win-library/3.5")
durac_v3$MESES <- row.names(durac_v3)
mdfr <- melt(as.data.frame(durac_v3, id.vars="MESES"))
library(scales)
p <- ggplot(mdfr, aes(mdfr$MESES, value, fill = variable)) +
geom_bar(position = "fill", stat = "identity") +
scale_y_continuous(labels = percent)
好吧,这是一个很大的修改。伙计们,很抱歉,自从我使用R或堆栈以来已经很长时间了。从这里阅读
数据帧将是这样:
data <- data.frame(
x = sample(c(1:12), 80, replace = TRUE),
y = sample(c("19","19DURAC","50","50DURAC","PUSH","PUSHDURAC","GRATIS","GRATISDURAC"), 80, replace = TRUE),
z = sample(1:80)
)
x
是一年中的月份(1月:1月,12月:12月),y
是分类变量(例如,州名),z是其值(花费的时间) DURAC
结尾的每个单词都包含一些内容,彼此之间的人数相同)。
首先,我想要一个堆积的条形图,其中月份在x
轴上。
其次,对于我的y
列,我的条形图仅表示数据的值而没有DURAC
结尾。这意味着19
,50
,PUSH
和GRATIS
。
第三,我希望将19DURAC
值表示为条形19
上的注释,将50DURAC
值表示为50
上的等等,依此类推。
再次,如果我不解释自己,我很抱歉。我有点生锈。
DPUT的输出
dput(head(mdfr))
structure(list(MESES = c("1", "2", "3", "4", "5", "6"), variable = structure(c(1L,
1L, 1L, 1L, 1L, 1L), .Label = c("19", "19DURAC", "50", "50DURAC",
"PUSH", "PUSHDURAC", "GRATIS", "GRATISDURAC"), class = "factor"),
value = c(NA, NA, 1431, 982, 766, NA)), row.names = c(NA,
6L), class = "data.frame")
答案 0 :(得分:1)
如果您可以使用dplyr
而不是reshape
,则以下解决方案应基于您共享的数据集的图片起作用
library(ggplot2)
library(scales)
library(dplyr)
durac_v3 %>%
group_by(MESES, variable) %>%
summarise(value = sum(value, na.rm = TRUE)) %>%
ggplot(aes(MESES, value, fill = variable)) +
geom_col(position = "fill") +
scale_y_continuous(labels = percent) +
geom_text(aes(x = MESES, y = value, label = value), position = "fill", vjust = 2)