Hi everyone,
As it stands, I can plot surface results on fsaverage for some data I have, both in static form and in interactive form (by using engine='plotly' in the function nilearn.plotting.plot_surf_stat_map). I can also put some atlas surface contours over it using nilearn.plotting.plot_surf_contours). My results seem to be fixed and static and I can’t really see the effects nicely by not being able to zoom and navigate either in a Jupyter cell or in the browser.
I have to take engine='plotly' out of the figure creation for plot_surf_stat_map if I want to pass anything to plot_surf_contours but it seems I can include it in the latter function (but doesn’t seem to do anything so I think it’s just treated as a kwarg that can’t be matched and is ignored).
I can’t see how to get the interactive version of the first figure but now with ROI contours on it. Is there something that I can do with the plotting.view_image_on_surf function for this? I can’t see how to connect it all up.
I’ve been following this tutorial.
If I had a figure or something that was returned from plot_surf_contours I would have a play around but it only seems to have plotting.show() to call and display all active figures (i.e. plt.show())
The function plotting.view_surf is also nice and works, but again, doesn’t have the ROI boundaries and fails if I put this into the fig= parameter of plot_surf_contours.
Anyone have any idea how to get interactivity for this sort of plot? I’d even settle for the dropdown options view_surf gives to change orientation instead of full interactivity.
Code:
from nilearn import plotting
fig = plotting.plot_surf_stat_map(
fsaverage.infl_left, sub29_results_fsaverage, hemi='left',
title='Subject 29', colorbar=True, view='posterior',
threshold=5.3, bg_map=curv_left_sign,
engine='plotly', # works if just using this function
bg_on_data=True
)
fig.show()
But what I was trying was the following, which doesn’t work:
fig = plotting.plot_surf_stat_map(
fsaverage.infl_left, sub29_results_fsaverage, hemi='left',
title='Subject 29', colorbar=True, view='posterior',
threshold=5.3, bg_map=curv_left_sign,
bg_on_data=True)
plotting.plot_surf_contours(fsaverage.infl_left, glasser, labels=labels,
levels=regions_indices, figure=fig,
legend=True, engine='plotly')
plotting.show()
I just get a static image with this. I don’t think providing the engine parameter to plot_surf_contours does anything (same thing happens if provided or not).
Anyone got any ideas? If not, perhaps a different way to manually mark ROI boundaries? Something like, put them on the bg_map directly in the plot_surf_stat_map or something?
- Alex