微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 R 和/或 Python 制作带有弹出图片的交互式散点图

如何解决如何使用 R 和/或 Python 制作带有弹出图片的交互式散点图

我想做一个交互式散点图。

具体来说,当我点击或将鼠标指针放在一个点上时,相应的图片应该是可视化的。

数据结构由x、y和文件路径(图片)组成。

我尝试了以下代码,但没有奏效。

library(plotly);library(png)

tmp=data.frame(x=c(1,2,3),y=c(1,file_path=c('C:/Users/osj118/Pictures/brain_illustrator.png','C:/Users/osj118/Pictures/Cap 2021-05-17 12-32-24-509.png','C:/Users/osj118/Pictures/brain_illustrator.png')
)
tmp %>% plot_ly() %>% add_trace(x=~x,y=~y,z=readpnG(~file_path))

Error in path.expand(source) : invalid 'path' argument

下图是我想做的。

我可以使用python代码

enter image description here

解决方法

之前曾询问过 related question。在这个问题和其他来源(例如 this)中的回答表明,没有简单的方法可以仅使用 plotly。但是,您可以使用它与 Shiny 一起创建自定义悬停图像,例如参见 this

如果您愿意按照问题中的说明使用 python,则有一种更简单的方法可以执行此操作,如下所示 (Source):

from bokeh.plotting import ColumnDataSource,figure,output_file,show

output_file("toolbar.html")

source = ColumnDataSource(data=dict(
    x=[1,2,3],y=[1,imgs=[
        'C:\\Users\\username\\Downloads\\pic.png','C:\\Users\\username\\Downloads\\pic.png',],))

TOOLTIPS = """
    <div>
        <div>
            <img
                src="@imgs" height="200" alt="@imgs" width="200"
                style="float: left; margin: 0px 15px 15px 0px;"
                border="2"
            ></img>
        </div>
    </div>
"""

p = figure(plot_width=400,plot_height=400,tooltips=TOOLTIPS,title="Mouse over the dots")

p.circle('x','y',size=20,source=source)

show(p)

这里的 pic.png 可能是您喜欢使用的大脑图像。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。