【问题标题】:How can I copy text from a single legend entry in plotly graphic?如何从绘图图形中的单个图例条目中复制文本?
【发布时间】:2022-08-21 10:34:52
【问题描述】:

我正在尝试从情节中选择单个条目/跟踪的文本。

默认情况下,我的绘图中根本无法选择文本,我生成的绘图是这样的: 在我的 R Markdown 脚本中,一个 R 代码块调用 plotly 图形对象。 Rmd 被编织(knitr)为我在浏览器中查看的 HTML。 我可以做到全部一次可选择的文本,或者通过

  1. 在编织 Rmd 时提供 text.css 包含

    <风格>
    js-plotly-plot .plotly .user-select-none {
    用户选择:全部!重要;
    }
    </style>

    或者 2. 使用这个可爱的书签:https://alanhogan.com/code/text-selection-bookmarklet

    这是结果:

    当将光标拖到图例中任何一行的文本上(通常移动以选择文本)时,会立即选择该行之前的所有行。我只想选择那一行,以便轻松复制。

    我怀疑这与图例在情节情节中的构建方式有关,但我对编程的理解不足,无法理解如何改变它。 我阅读了有关情节点击事件的信息,尤其是 \'plotly_legendclick\' 和 \'plotly_legenddoubleclick\',它们在启用/禁用情节中的跟踪时确实在单行级别上起作用:https://plotly.com/javascript/plotlyjs-events/。 那么有可能,一些 JS 代码可以写入到这里处理的 R Markdown 中吗?

    我不了解将R Markdown编织为html和JS角色的交互过程(并且不知道任何JS)。如果有人告诉我一种方法,我可以提供 html 文件。 我的想法已经用完了,期待您的建议。谢谢!

  • 编辑:交换屏幕截图,创建用于解决问题的 html 文件备份,随时可用!

标签: javascript plotly knitr legend r-plotly


【解决方案1】:

您可以做的事情很少。

第一个——而不是让所有东西都可选择——尤其是在存在这么多指针事件的情况下,将选择更改为仅适用于图例文本。

<style>
svg g.infolayer text {
 -webkit-user-select: text;
 -moz-user-select: text;
 -ms-user-select: text;
 user-select: text;
}
</style>

另一件有帮助的事情是从图例中删除指针事件。默认情况下,您可以单击图例文本以从图中隐藏该元素。这个指针事件无疑会干扰文本选择。

您可以使用以下命令禁用 Plotly 图的这一部分。如果您有每个图例项目的痕迹,我已经添加了 itemclick。如果您使用图例组,我添加了groupclick

layout(legend = list(itemclick = F, groupclick = "toggleitem")) 

【讨论】:

    猜你喜欢
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 2021-11-05
    • 2020-05-27
    • 1970-01-01
    相关资源
    最近更新 更多