条形图中的颜色
Color in plotly bar chart
我正在尝试在 R 中使用 plotly 生成条形图。条形图应按值排序,并且有两个 类 条形图,我想用不同的颜色。然而,当我添加颜色时,条形图被分成两组,在组内排序。关于如何将它们保持在一个组中的任何提示?
这是我的代码:
plotting.df = data.frame(names=c("a", "b", "c", "d", "e", "f", "g"),
value=c(1.9468656, 1.3867055, 1.0433950, 0.8949743, 0.3714826, 0.3605037, 0.3003954),
label=c("y", "n", "y", "n", "n", "n", "n"),
color=c("red", "black", "red", "black", "black", "black", "black"))
plotting.df$names = factor(as.character(plotting.df$names), levels=as.character(plotting.df$names)[order(plotting.df$value, decreasing=TRUE)])
plotting.df = plotting.df[order(plotting.df$value, decreasing=TRUE), ]
plot_ly(plotting.df, type="bar", x=names, y=value,
name="Comp a",
hoverinfo="text", text=c(paste("Name:", plotting.df$names,
"<br>Value:", signif(plotting.df$value, digits=3),
"<br>Label:", plotting.df$label)),
color=color)
还有一个例子:
有点乱,但是 'solves' 提出了具体问题。
从您的数据框开始:
library(tidyr)
plotting.df2 <- plotting.df %>%
spread(names, value, fill = NA) %>%
gather("names", "value", a:g)
plot_ly(plotting.df2,
type="bar",
x=names,
y=value,
name="Comp a",
hoverinfo="text",
color=color,
text=c(paste("Name:", plotting.df$names,
"<br>Value:", signif(plotting.df$value, digits=3),
"<br>Label:", plotting.df$label))) %>%
layout(barmode = "stack")
基本上,此方法是为每个名称和颜色的组合创建一个数据点,并填充 NA。然后将这些堆叠在情节中。
如果您想稍后实际堆叠数据值,这个 'solution' 可能没用,但希望这个 hack 至少可以暂时让某人摆脱类似的困境。
编辑:
此示例使用 plotly
3.x.x。如果您使用 plotly
4.x.x 或更高版本,此代码可能无法正常工作。详情请见此处:https://www.r-bloggers.com/upgrading-to-plotly-4-0-and-above/
我正在尝试在 R 中使用 plotly 生成条形图。条形图应按值排序,并且有两个 类 条形图,我想用不同的颜色。然而,当我添加颜色时,条形图被分成两组,在组内排序。关于如何将它们保持在一个组中的任何提示?
这是我的代码:
plotting.df = data.frame(names=c("a", "b", "c", "d", "e", "f", "g"),
value=c(1.9468656, 1.3867055, 1.0433950, 0.8949743, 0.3714826, 0.3605037, 0.3003954),
label=c("y", "n", "y", "n", "n", "n", "n"),
color=c("red", "black", "red", "black", "black", "black", "black"))
plotting.df$names = factor(as.character(plotting.df$names), levels=as.character(plotting.df$names)[order(plotting.df$value, decreasing=TRUE)])
plotting.df = plotting.df[order(plotting.df$value, decreasing=TRUE), ]
plot_ly(plotting.df, type="bar", x=names, y=value,
name="Comp a",
hoverinfo="text", text=c(paste("Name:", plotting.df$names,
"<br>Value:", signif(plotting.df$value, digits=3),
"<br>Label:", plotting.df$label)),
color=color)
还有一个例子:
有点乱,但是 'solves' 提出了具体问题。
从您的数据框开始:
library(tidyr)
plotting.df2 <- plotting.df %>%
spread(names, value, fill = NA) %>%
gather("names", "value", a:g)
plot_ly(plotting.df2,
type="bar",
x=names,
y=value,
name="Comp a",
hoverinfo="text",
color=color,
text=c(paste("Name:", plotting.df$names,
"<br>Value:", signif(plotting.df$value, digits=3),
"<br>Label:", plotting.df$label))) %>%
layout(barmode = "stack")
基本上,此方法是为每个名称和颜色的组合创建一个数据点,并填充 NA。然后将这些堆叠在情节中。
如果您想稍后实际堆叠数据值,这个 'solution' 可能没用,但希望这个 hack 至少可以暂时让某人摆脱类似的困境。
编辑:
此示例使用 plotly
3.x.x。如果您使用 plotly
4.x.x 或更高版本,此代码可能无法正常工作。详情请见此处:https://www.r-bloggers.com/upgrading-to-plotly-4-0-and-above/