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
477 stars 26 forks source link

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

Open awray3 opened 7 months ago

awray3 commented 7 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 7 months ago

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

awray3 commented 7 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 7 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 7 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 7 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 7 months ago

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

awray3 commented 7 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 6 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 6 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 6 months ago

I could look into it