R在条形图上绘制多个维度
R Plotly multiple dimensions on a bar chart
我必须使用如下所示的数据绘制堆积条形图
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 中执行此操作。
有人可以帮忙吗?
谢谢,
马诺
你可以试试:
# 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")
# 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 版本中的一个错误 plotly_4.5.2
。在 x 轴上绘制两个以上的条形图没有任何问题。用三个 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)
我必须使用如下所示的数据绘制堆积条形图
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 中执行此操作。
有人可以帮忙吗?
谢谢,
马诺
你可以试试:
# 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")
# 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 版本中的一个错误 plotly_4.5.2
。在 x 轴上绘制两个以上的条形图没有任何问题。用三个 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)