带有图案的 R 堆积条形图

问题描述 投票:0回答:1

我有一个

data.frame
,我想将其绘制为带有
R
plotly
的堆叠条形图:

data.df <- data.frame(group = c(rep("g1",6),rep("g2",6),rep("g3",6)),
                 sample = rep(c(paste0("f", 1:3), paste0("m", 1:3)), 3),
                 f = rep(100/6, 6))

每个

data.df$group
都是一个条形,其中
data.df$sample
是每个条形中堆栈中的层(具有不同的颜色),并且由于有两组
data.df$sample
我希望每个都有其自己的自己的图案。

这是带有颜色和图案的

data.frame

colors.df <- data.frame(sample = c(c(paste0("f", 1:3)), c(paste0("m", 1:3))),
                        color = rep(c("#FFC0CB", "#FFFF00", "#00FFFF"),2),
                        shape = c(rep("stripe", 3),rep("cross", 3)))

这是我正在尝试的

plotly
代码:

library(plotly)
plot_ly(x = data.df$group, y = data.df$f, name = data.df$sample, color = data.df$sample,
        type = 'bar', colors = colors.df$color, marker = list(pattern = list(shape = colors.df$chape))) %>%
  layout(xaxis = list(showticklabels = F), yaxis = list(title = "%", zeroline = F), barmode = 'stack', orientation = 'v')

它忽略了

markers
参数并给出:

知道如何让

data.df$sample
中的两组以不同的模式出现吗?

r plotly stack bar-chart shapes
1个回答
0
投票

您需要修复形状的拼写并将图案定义为符号而不是字符串:

data.df <- data.frame(group = c(rep("g1",6),rep("g2",6),rep("g3",6)),
                      sample = rep(c(paste0("f", 1:3), paste0("m", 1:3)), 3),
                      shape = c(rep("x", 3),rep("|", 3)), ## I added the shape in data.df
                      f = rep(100/6, 6))

colors.df <- data.frame(sample = c(c(paste0("f", 1:3)), c(paste0("m", 1:3))),
                        color = rep(c("#FFC0CB", "#FFFF00", "#00FFFF"),2))

然后情节:

library(plotly)
plot_ly(x = data.df$group, y = data.df$f, name = data.df$sample, color = data.df$sample,
        type = 'bar', colors = colors.df$color, marker = list(pattern = list(shape = data.df$shape))) %>%
  layout(xaxis = list(showticklabels = F), yaxis = list(title = "%", zeroline = F), barmode = 'stack')
© www.soinside.com 2019 - 2024. All rights reserved.