2016-10-13 78 views
0

上Plotly多个维度我要创建在plotly与数据东西堆积条形图像下面R A条形图

df <- data.frame(
    var1 = c("NY", "NY", "NY", "SFO", "SFO", "SFO"), 
    var2 = c("LOW", "Medium", "High", "Low", "Medium", "High"), 
    value = c(10, 15, 20, 15, 20, 15) 
) 

基本上x轴将有2条为VAR1,填充有用于每个VAR2值。在ggplot中,你可以使用var2作为填充,但我无法弄清楚如何在plotly中做到这一点。

有人可以帮忙吗?

感谢,

马诺

回答

0

你可以试试:

# Split the data 
df_list <- split(df, df$var2) 
# plot the data and add the traces for var2 
plot_ly(df_list$Low, x=~var1, y=~value, type="bar", name="Low") %>% 
    add_trace(y= df_list$Medium$value , name = "Medium") %>% 
    add_trace(y= df_list$High$value, name = "High") %>% 
    layout(barmode = "stack") 

enter image description here

# A faster way would be something like this: 
# First order var2 
df$var2 <- factor(df$var2,levels = c("Low", "Medium", "High")) 
# Plot 
plot_ly(df, x= ~var11, y= ~value, color= ~var2, type="bar") %>% layout(barmode = "stack") 

后者的解决方案无法正确显示的颜色在传说中,这似乎是一个错误版本plotly_4.5.2。在xaxis上绘制多于两个条的工作没有任何问题。试试这个数据有三个var1组:

df2 <- data.frame(
    var1 = c("NY", "NY", "NY", "SFO", "SFO", "SFO","Test"), 
    var2 = c("Low", "Medium", "High", "Low", "Medium", "High","Low"), 
    value = c(10, 15, 20, 15, 20, 15,30) 
) 
plot_ly(df2, x=~var1, y=~value, color=~var2, type="bar") %>% layout(barmode = "stack") 

# Or use ggplot 
library(ggplot2) 
p <- ggplot(df, aes(x=var1, y=value, fill=var2)) + geom_bar(stat="identity") + theme_bw() 
ggplotly(p) 

enter image description here

+0

谢谢Jimbou,与第一个选项,并用我的真实的数据,我莫名其妙地收到一个酒吧和两个折线图的组合。你知道什么可能是错的吗?另外,如果我使用选项2,是否有方法为每个Var 2类别指定自定义颜色? –

+0

忘了提及我的真实数据,我不能在我的x和y值之前使用'〜'。如果我在变量之前使用波浪形,我不会得到图表。我已经检查了数据类型,它与上面的示例数据相同,因此不确定发生了什么。谢谢 –

+0

你使用最实际的情节版本吗?使用'sessionInfo()'检查它。 – Jimbou