如何使图例出现在情节上但不绘制相关点
Posted
技术标签:
【中文标题】如何使图例出现在情节上但不绘制相关点【英文标题】:How to make a legend appear on plotly but not plot the associated points 【发布时间】:2021-12-27 17:42:03 【问题描述】:我有一个情节,我只想渲染图例,但没有情节点。谁能告诉我怎么做?
library(tidyverse)
library(plotly)
mtcars %>%
mutate(cyl = factor(cyl)) %>%
plot_ly() %>%
add_markers(x = ~mpg,
y = ~hp,
color = ~cyl,
colors = c("4" = "red", "6" = "green", "8" = "blue"))
目前我有这个:
我想要的是这个:
【问题讨论】:
请查看documentation、fig.add_trace(go.Scatter( x=[1, 2, 3, 4, 5], y=[5, 4, 3, 2, 1], visible='legendonly' ))
。您是否尝试将可见性设置为 legendonly?您能否在问题中说明您尝试了什么以及为什么它不起作用?
我可以将您发送给与我一起工作的数据工程师吗?如果有人成功地告诉他们我们需要闪亮,我们会很高兴!
请问这里的背景是什么?你对结果做了什么?
哈哈,我是一个闪亮的粉丝,所以总是很乐意为它做一个插件:) 特定的用例是特定于业务的,但它是一个复杂的图表,其中标记可以根据两个分类着色和形状变量。如果你没有找到一个奇怪的黑客,那么图例将显示这两个分类变量的所有组合(所以如果你有 5 X 2,那么你有 10 个图例条目)实际上我想要的只是一个有 7 个的图例条目 (5 + 2)
啊,这也可以使用legendgroup
's 解决。请查看我的相关答案here 或here。
【参考方案1】:
不确定这个结果应该有什么用,但您可以像这样禁用 legendclick:
编辑:也可以不用onRender
library(plotly)
mtcars %>%
mutate(cyl = factor(cyl)) %>%
plot_ly() %>%
add_markers(x = ~mpg,
y = ~hp,
color = ~cyl,
colors = c("4" = "red", "6" = "green", "8" = "blue"), visible='legendonly') %>%
layout(legend=list(itemclick = FALSE, itemdoubleclick = FALSE))
library(htmlwidgets)
library(plotly)
js <- c(
"function(el, x)",
" el.on('plotly_legendclick', function() ",
" return false;",
" );",
" el.on('plotly_legenddoubleclick', function() ",
" return false;",
" );",
"")
mtcars %>%
mutate(cyl = factor(cyl)) %>%
plot_ly() %>%
add_markers(x = ~mpg,
y = ~hp,
color = ~cyl,
colors = c("4" = "red", "6" = "green", "8" = "blue"), visible='legendonly') %>%
onRender(js)
【讨论】:
以上是关于如何使图例出现在情节上但不绘制相关点的主要内容,如果未能解决你的问题,请参考以下文章
堆叠的水平条形图,图例在图内。我如何使这个情节更明显[重复]
避免使用 facet_wrap 从 ggplot 进行情节转换中的图例重复