我需要从使用dplyr的熔融函数创建的数据集中创建一个比例条形图。按比例,我的意思是,我需要一个图表,其中每个杆的高度将是不同的,根据所占的比例。我想将以下示例代码生成的值X与基于"group“的填充进行比例。我尝试过许多在线解决方案,我经常遇到的不是错误代码,而是实心的条形图,没有比例上的差别。
参见示例代码:
library(ggplot2)
library(tidyr)
set.seed(1)
example_matrix <-matrix(rpois(90,7), nrow=6,ncol=15)
example_df <- data.frame(example_matrix)
rownames(example_df) <-c('group1','group2','group3','group4','group5','group6')
df <- reshape2::melt(as.matrix(example_df))```
发布于 2022-09-07 13:39:15
library(data.table)
library(ggplot2)
set.seed(1)
example_matrix <-matrix(rpois(90,7), nrow=6,ncol=15)
example_df <- data.frame(example_matrix)
rownames(example_df) <-c('group1','group2','group3','group4','group5','group6')
df <- reshape2::melt(as.matrix(example_df))
df$fraction <- df$value/sum(df$value)
setDT(df)
p <-
ggplot(data = df, aes(x = Var2, y = fraction, fill = Var1)) +
geom_bar(stat = "identity", position = "dodge") +
scale_fill_manual(values = c("blue", "red", "black", "orange", "pink", "yellow"))
print(p)
发布于 2022-09-08 07:35:53
我不认为这可以直接用绘图命令来完成,您需要在之前转换您的数据。例如:
library(dplyr)
df <- df %>% group_by(Var2) %>% mutate(fraction = value/sum(value))
然后用另一个答案中的ggplot
解决方案进行绘图,或者下面是一个plotly
版本:
library(plotly)
plot_ly(data = df, x = ~Var2, y = ~fraction, color = ~Var1, type = 'bar')
https://stackoverflow.com/questions/73636297
复制相似问题