【问题标题】:R Plotly legend filteringR Plotly 图例过滤
【发布时间】:2017-06-23 04:42:53
【问题描述】:

我从 plotly 网站 (https://plot.ly/ggplot2/geom_bar) 复制粘贴了代码示例,但过滤后的图表表现与示例不同;我怎样才能让我的能够像那样重塑?

代码:

library(plotly)

DF <- read.table(text="Rank F1     F2     F3
1    500    250    50
2    400    100    30
3    300    155    100
4    200    90     10", header=TRUE)

library(reshape2)
DF1 <- melt(DF, id.var="Rank")

p <- ggplot(DF1, aes(x = Rank, y = value, fill = variable)) +
  geom_bar(stat = "identity")

p <- ggplotly(p)

来自网络:
我的 RStudio 查看器:

【问题讨论】:

  • 过滤是什么意思。
  • 变量F2 被排除在图上,通过点击图例过滤
  • 编辑您的问题以及您使用的代码
  • 这里没有图例过滤!
  • @RUser 好吧,也许我使用了错误的短语,它是通过直接单击图例进行过滤的,所以它没有写在代码上(如果你想要的话)。 Plotly 生成交互式绘图。

标签: r plot ggplot2 plotly


【解决方案1】:

如果你仔细比较示例代码和发布的代码产生的数据,你会发现两个不同之处。

  1. “错误”图表具有 base
  2. 两张图的顺序颠倒了

为了防止堆叠的条形图在切换轨迹时不折叠,您需要删除 base 值(并且出于美学原因,颠倒轨迹的顺序)。

library(plotly)

DF <- read.table(text="Rank F1     F2     F3
1    500    250    50
2    400    100    30
3    300    155    100
4    200    90     10", header=TRUE)

library(reshape2)
DF1 <- melt(DF, id.var="Rank")

gp <- ggplot(DF1, aes(x = Rank, y = value, fill = variable)) +
  geom_bar(stat = "identity")

p <- ggplotly(gp)

for (i in 1:length(p$x$data)) {
  p$x$data[[i]]$base <- c()
  tmp <- p$x$data[[i]]
  p$x$data[[i]] <- p$x$data[[length(p$x$data) - i + 1]]
  p$x$data[[length(p$x$data) - i + 1]] <- tmp
}
p

【讨论】:

猜你喜欢
  • 2018-02-04
  • 2019-02-02
  • 2021-03-20
  • 1970-01-01
  • 2020-02-15
  • 2018-11-15
  • 2019-01-28
  • 1970-01-01
  • 2014-11-24
相关资源
最近更新 更多