stared / livelossplot

Live training loss plot in Jupyter Notebook for Keras, PyTorch and others
https://p.migdal.pl/livelossplot
MIT License
1.29k stars 143 forks source link

Can the graph generated be saved as an image ? #14

Closed jmaister closed 5 years ago

stared commented 6 years ago

You mean - the final graph or an animation?

Both are doable.

jmaister commented 6 years ago

The final graph. How can it be done?

minghao-wu commented 6 years ago

if you have a plan for this feature, is it doable to save the image as a vector file?

I mean, if the saved image is a vector file, it doesn't get blurred when we zoom in.

Thank you very much for your work.

stared commented 6 years ago

OK, I saw it and it is not as straightforward as I thought. plt.savefig does not work, since it is after plt.show.

If it is notebook, you can right click and save it. For other options it depends if you want to do it instead of showing (I can add it easily), or along with (need to check).

mickvanhulst commented 5 years ago

Just weighing in here: saving is of importance when doing e.g. K-fold cross-validation. As it's live, the graphs are overwritten meaning that previous data is lost. If we want to do cross-validation in one cell, then we need to save the figures somewhere else.

I've circumvented this by saving the objects in a list and then printing them out and manually saving them afterwards, but this is obviously not optimal.

Any suggestions?

stared commented 5 years ago

@mickvanhulst If you know how to do that, I am open to Pull Requests. Otherwise, I don't have much time for this project right now.

mickvanhulst commented 5 years ago

@stared I've sent a pull request. I've basically added two parameters (save_img and file_name), which can be used to save the image. Every time the draw function is called, the image will be saved. I've tested the method for Pytorch thus far. Let me know if any other changes are required.

In terms of documentation, I don't want to ruin the style you've created, so feel free to amend the following:

To save the plot, add save_img=True and add the file_name parameter with the directory, filename and file name extension (e.g. file_name='./folder_1/filename.png') as parameters when calling PlotLosses().

stared commented 5 years ago

@mickvanhulst I merged the pool request, thank you a lot! @jmaister - it finally works (with current repo master or will work with 0.2.3 and above).

Just use PlotLosses(fig_path="./plot.png") or PlotLossesKeras(fig_path="./plot.png") (not file_name :) ).

mrmitzh commented 3 years ago

The following code doesn't work in the latest version of livelossplot.


PlotLosses(fig_path="./plot.png")

Do we have other ways to save the figure generated? 
Vince-LD commented 3 years ago

Hey @mrmitzh, this is my first response on Github ever. It comes kinda late compared to the discussion, but I've just been confronted with the same issue of not being able so save the graphs. I'm using PlotLossesKerasTF() and fig_path = 'filename.png' isn't working. After digging a bit into the code (I'm not an expert lol), I found that MatplotlibPlot() has a figpath argument. So the solution for me, using Jupyter Notebook is :

from livelossplot import PlotLossesKerasTF
from livelossplot.outputs import MatplotlibPlot

live_loss = PlotLossesKerasTF(outputs=[MatplotlibPlot(figpath ="graph.png")])