R Plotly:如何在 R Plot.ly 中设置瀑布图各个条形的颜色?
R Plotly: How to set the color of Individual Bars of a Waterfall Chart in R Plot.ly?
我正在尝试使用 R Plotly 更改瀑布图各个条形的颜色。更具体地说,第一个和最后一个栏,我希望它分别是蓝色和黄色。所以在下图中,第 1 组必须是蓝色,第 2 组必须是黄色。
R Plotly Waterfall chart 貌似只能设置增加、减少和总条三种颜色的选项。
下面是用于生成上图的代码:
library(plotly)
df <- data.frame(Rank = 1:7, Variable = c("Group 1","A","B","C","D","E","Group 2"),
Value = c(10,2,2,2,1,1,20),
measure = c("relative","relative","relative","relative","relative","relative","total"),
colour = c("yellow","green","green","green","green","green","blue"))
df$Variable <- factor(df$Variable, levels = unique(df$Variable))
df$text <- as.character(round(df$Value,2))
df$Factor <- as.numeric(df$Variable)
plot_ly(df, name = "20", type = "waterfall", measure = ~measure,
x = ~Variable, textposition = "outside", y= ~Value, text =~paste0('$',text),
hoverinfo='none',cliponaxis = FALSE,
connector = list(line = list(color= "rgb(63, 63, 63)"))
) %>%
layout(title = "",
xaxis = list(title = ""),
yaxis = list(title = "",tickprefix ='$'),
autosize = TRUE,
showlegend = FALSE
)
任何帮助将不胜感激。
R Plotly Waterfall chart seems to only have the option to set three
colors for increasing, decreasing and total bars.
不幸的是,你似乎是完全正确的。但好消息是,plotly 让您几乎可以随心所欲地向图表添加形状。您已经可以通过 totals
颜色将您喜欢的颜色之一设置为 Group2。所以你真的只需要添加一个形状就可以得到:
我不知道这是否适用于您的真实世界数据,但在这种情况下效果很好。操作方法如下:
library(plotly)
df <- data.frame(Rank = 1:7, Variable = c("Group 1","A","B","C","D","E","Group 2"),
Value = c(10,2,2,2,1,1,20),
measure = c("relative","relative","relative","relative","relative","relative","total"),
colour = c("yellow","green","green","green","green","green","yellow"))
df$Variable <- factor(df$Variable, levels = unique(df$Variable))
df$text <- as.character(round(df$Value,2))
df$Factor <- as.numeric(df$Variable)
p<-plot_ly(df, name = "20", type = "waterfall", measure = ~measure,
x = ~Variable, textposition = "outside", y= ~Value, text =~paste0('$',text),
hoverinfo='none',cliponaxis = FALSE,
connector = list(line = list(color= "rgb(63, 63, 63)")),
totals = list(marker = list(color = "yellow", line = list(color = 'yellow', width = 3)))
) %>%
layout(title = "",
xaxis = list(title = ""),
yaxis = list(title = "",tickprefix ='$'),
autosize = TRUE,
showlegend = FALSE,
shapes = list(
list(type = "rect",
fillcolor = "blue", line = list(color = "blue"), opacity = 1,
x0 = -0.4, x1 = 0.4, xref = "x",
y0 = 0.0, y1 = 10, yref = "y"))
)
p
你想要更多的形状吗?只需在 layout
中的 shapes
列表中添加另一个,如下所示:
library(plotly)
df <- data.frame(Rank = 1:7, Variable = c("Group 1","A","B","C","D","E","Group 2"),
Value = c(10,2,2,2,1,1,20),
measure = c("relative","relative","relative","relative","relative","relative","total"),
colour = c("yellow","green","green","green","green","green","yellow"))
df$Variable <- factor(df$Variable, levels = unique(df$Variable))
df$text <- as.character(round(df$Value,2))
df$Factor <- as.numeric(df$Variable)
p<-plot_ly(df, name = "20", type = "waterfall", measure = ~measure,
x = ~Variable, textposition = "outside", y= ~Value, text =~paste0('$',text),
hoverinfo='none',cliponaxis = FALSE,
connector = list(line = list(color= "rgb(63, 63, 63)")),
totals = list(marker = list(color = "yellow", line = list(color = 'yellow', width = 3)))
) %>%
layout(title = "",
xaxis = list(title = ""),
yaxis = list(title = "",tickprefix ='$'),
autosize = TRUE,
showlegend = FALSE,
shapes = list(
list(type = "rect",
fillcolor = "blue", line = list(color = "blue"), opacity = 1,
x0 = -0.4, x1 = 0.4, xref = "x",
y0 = 0.0, y1 = 10, yref = "y"),
list(type = "rect",
fillcolor = "blue", line = list(color = "blue"), opacity = 0.2,
x0 = 3, x1 = 4, xref = "x",
y0 = 4, y1 = 12.5, yref = "y"))
)
p
输出:
我正在尝试使用 R Plotly 更改瀑布图各个条形的颜色。更具体地说,第一个和最后一个栏,我希望它分别是蓝色和黄色。所以在下图中,第 1 组必须是蓝色,第 2 组必须是黄色。
R Plotly Waterfall chart 貌似只能设置增加、减少和总条三种颜色的选项。
下面是用于生成上图的代码:
library(plotly)
df <- data.frame(Rank = 1:7, Variable = c("Group 1","A","B","C","D","E","Group 2"),
Value = c(10,2,2,2,1,1,20),
measure = c("relative","relative","relative","relative","relative","relative","total"),
colour = c("yellow","green","green","green","green","green","blue"))
df$Variable <- factor(df$Variable, levels = unique(df$Variable))
df$text <- as.character(round(df$Value,2))
df$Factor <- as.numeric(df$Variable)
plot_ly(df, name = "20", type = "waterfall", measure = ~measure,
x = ~Variable, textposition = "outside", y= ~Value, text =~paste0('$',text),
hoverinfo='none',cliponaxis = FALSE,
connector = list(line = list(color= "rgb(63, 63, 63)"))
) %>%
layout(title = "",
xaxis = list(title = ""),
yaxis = list(title = "",tickprefix ='$'),
autosize = TRUE,
showlegend = FALSE
)
任何帮助将不胜感激。
R Plotly Waterfall chart seems to only have the option to set three colors for increasing, decreasing and total bars.
不幸的是,你似乎是完全正确的。但好消息是,plotly 让您几乎可以随心所欲地向图表添加形状。您已经可以通过 totals
颜色将您喜欢的颜色之一设置为 Group2。所以你真的只需要添加一个形状就可以得到:
我不知道这是否适用于您的真实世界数据,但在这种情况下效果很好。操作方法如下:
library(plotly)
df <- data.frame(Rank = 1:7, Variable = c("Group 1","A","B","C","D","E","Group 2"),
Value = c(10,2,2,2,1,1,20),
measure = c("relative","relative","relative","relative","relative","relative","total"),
colour = c("yellow","green","green","green","green","green","yellow"))
df$Variable <- factor(df$Variable, levels = unique(df$Variable))
df$text <- as.character(round(df$Value,2))
df$Factor <- as.numeric(df$Variable)
p<-plot_ly(df, name = "20", type = "waterfall", measure = ~measure,
x = ~Variable, textposition = "outside", y= ~Value, text =~paste0('$',text),
hoverinfo='none',cliponaxis = FALSE,
connector = list(line = list(color= "rgb(63, 63, 63)")),
totals = list(marker = list(color = "yellow", line = list(color = 'yellow', width = 3)))
) %>%
layout(title = "",
xaxis = list(title = ""),
yaxis = list(title = "",tickprefix ='$'),
autosize = TRUE,
showlegend = FALSE,
shapes = list(
list(type = "rect",
fillcolor = "blue", line = list(color = "blue"), opacity = 1,
x0 = -0.4, x1 = 0.4, xref = "x",
y0 = 0.0, y1 = 10, yref = "y"))
)
p
你想要更多的形状吗?只需在 layout
中的 shapes
列表中添加另一个,如下所示:
library(plotly)
df <- data.frame(Rank = 1:7, Variable = c("Group 1","A","B","C","D","E","Group 2"),
Value = c(10,2,2,2,1,1,20),
measure = c("relative","relative","relative","relative","relative","relative","total"),
colour = c("yellow","green","green","green","green","green","yellow"))
df$Variable <- factor(df$Variable, levels = unique(df$Variable))
df$text <- as.character(round(df$Value,2))
df$Factor <- as.numeric(df$Variable)
p<-plot_ly(df, name = "20", type = "waterfall", measure = ~measure,
x = ~Variable, textposition = "outside", y= ~Value, text =~paste0('$',text),
hoverinfo='none',cliponaxis = FALSE,
connector = list(line = list(color= "rgb(63, 63, 63)")),
totals = list(marker = list(color = "yellow", line = list(color = 'yellow', width = 3)))
) %>%
layout(title = "",
xaxis = list(title = ""),
yaxis = list(title = "",tickprefix ='$'),
autosize = TRUE,
showlegend = FALSE,
shapes = list(
list(type = "rect",
fillcolor = "blue", line = list(color = "blue"), opacity = 1,
x0 = -0.4, x1 = 0.4, xref = "x",
y0 = 0.0, y1 = 10, yref = "y"),
list(type = "rect",
fillcolor = "blue", line = list(color = "blue"), opacity = 0.2,
x0 = 3, x1 = 4, xref = "x",
y0 = 4, y1 = 12.5, yref = "y"))
)
p
输出: