benlubas / molten-nvim

A neovim plugin for interactively running code with the jupyter kernel. Fork of magma-nvim with improvements in image rendering, performance, and more
GNU General Public License v3.0
626 stars 33 forks source link

[Feature Request] add support for `application/vnd.holoviews_load.v0+json` #142

Open awray3 opened 10 months ago

awray3 commented 10 months ago

Hello,

I am trying to run df.plot() on a pandas Dataframe and view the plot with Molten. Only text/plain and text/html options are returned by MoltenEvaluateLine, and :MoltenOpenInBrowser shows a blank page.

Is there a specific way I should be running plotting code in order for this to work?

benlubas commented 10 months ago

If there's a text/html output it should work. I can check it out

awray3 commented 10 months ago

Here's the output of debug logs:

image

No image is displayed either, even though I have image.nvim installed and configured correctly (I think) with all optional dependencies in my neovim environment (which is separate from the kernel environment)

benlubas commented 10 months ago

I'm curious about the HTML mimetype b/c I don't see it. I am seeing the image though. I guess you haven't setup image.nvim correctly

image
awray3 commented 10 months ago

I can confirm I have image.nvim working (I put the neovim logo there with require('image').from_file(...)) and I've set the image.nvim config. I use Lunarvim for the base of my config, perhaps there's a conflict in some autogroup somewhere.

image
benlubas commented 10 months ago

I highly doubt that it's Lunarvim interfering.

do you have you config on github that you could link for me to take a look at?

awray3 commented 10 months ago

Yes, here's my config. I'm running on kitty.

awray3 commented 10 months ago

Aha, I found what was missing from the init function:

vim.g.molten_image_provider = "image.nvim"

Now plots that come back as image/png work!

Though I guess there's still the original problem. I often use hvplot which returns 'text/html' instead of 'image/png', and I'm still getting nothing from :MoltenOpenInBrowser.

benlubas commented 10 months ago

I also see nothing when trying to run the following code:

import hvplot.pandas  # noqa
from bokeh.sampledata import iris

iris = iris.flowers

hvplot.plotting.andrews_curves(
    iris,
    class_column='species',
    samples=20,

There are a few hints in the browser console: image

And that in conjunction with this from their website: image

Makes me think that we need to do something extra for this to work...

benlubas commented 10 months ago

This is the special mimetype that we could support: application/vnd.holoviews_load.v0+json. I'm not sure which javascript library we need to load, or where to get it from or anything like that honestly. Do you have any idea where to look?

awray3 commented 10 months ago

I could look into it