使用 plotly 创建一个稍微重叠的条形图
Create a slightly overlapping bar chart with plotly
我有下面的 plotly
条形图,它显示已发送和已点击的电子邮件。由于点击的电子邮件包含在已发送邮件中,我想将它们显示为稍微重叠而不是分组条形图。
类似于:
Emails <- c("g", "o", "m")
Sent <- c(20, 24, 33)
Clicked <- c(12, 18, 29)
data <- data.frame(Emails, Sent, Clicked)
library(plotly)
fig <- plot_ly(data, x = ~Emails, y = ~Sent, type = 'bar', name = 'Sent',marker=list(color="#556361"),
hoverinfo = paste(Emails,Sent))
fig <- fig %>% add_trace(y = ~Clicked, name = 'Clicked',marker=list(color="#A72608"),
hoverinfo = paste(Emails,Clicked))
fig <- fig %>% layout(yaxis = list(title = 'Count'), barmode = 'stack')
fig
好吧,实际上我不知道如何通过 plotly 语法创建所需的绘图输出。由于 plotly::ggplotly()
,我通常使用 ggplot 语法然后将其转换为绘图输出
这是我基于 ggplot 的代码和(相对)绘图解决方案;
Emails <- c("g", "o", "m")
Sent <- c(20, 24, 33)
Clicked <- c(12, 18, 29)
data <- data.frame(Emails, Sent, Clicked)
data %>%
melt(value.name = 'n',id.vars = 'Emails',variable.name = 'type') %>%
ggplot(aes(x=Emails,y=n,fill=type))+
geom_col(position = position_jitterdodge(dodge.width = 0.5,jitter.height = 0,jitter.width = 0,seed = 25)) -> gg_output
plotly_object <- plotly::ggplotly(gg_output)
plotly_object
我有下面的 plotly
条形图,它显示已发送和已点击的电子邮件。由于点击的电子邮件包含在已发送邮件中,我想将它们显示为稍微重叠而不是分组条形图。
类似于:
Emails <- c("g", "o", "m")
Sent <- c(20, 24, 33)
Clicked <- c(12, 18, 29)
data <- data.frame(Emails, Sent, Clicked)
library(plotly)
fig <- plot_ly(data, x = ~Emails, y = ~Sent, type = 'bar', name = 'Sent',marker=list(color="#556361"),
hoverinfo = paste(Emails,Sent))
fig <- fig %>% add_trace(y = ~Clicked, name = 'Clicked',marker=list(color="#A72608"),
hoverinfo = paste(Emails,Clicked))
fig <- fig %>% layout(yaxis = list(title = 'Count'), barmode = 'stack')
fig
好吧,实际上我不知道如何通过 plotly 语法创建所需的绘图输出。由于 plotly::ggplotly()
这是我基于 ggplot 的代码和(相对)绘图解决方案;
Emails <- c("g", "o", "m")
Sent <- c(20, 24, 33)
Clicked <- c(12, 18, 29)
data <- data.frame(Emails, Sent, Clicked)
data %>%
melt(value.name = 'n',id.vars = 'Emails',variable.name = 'type') %>%
ggplot(aes(x=Emails,y=n,fill=type))+
geom_col(position = position_jitterdodge(dodge.width = 0.5,jitter.height = 0,jitter.width = 0,seed = 25)) -> gg_output
plotly_object <- plotly::ggplotly(gg_output)
plotly_object