将.imshow()之后的子图保存在matplotlib中

时间:2018-07-19 18:08:00

标签: python matplotlib visualization subplot

这是我的可视化代码:

        public static string ConvertToMp3(string inputFile, string outputFile = "extracted_audio.mp3")
    {
        Console.WriteLine("Converting mp3 to " + Path.GetFullPath("extracted_audio.mp3"));
        string mp3out = "";

        try
        {
            if (ffmpegProcess != null)
                ffmpegProcess.Kill();

            ffmpegProcess = new Process();
            ffmpegProcess.StartInfo.UseShellExecute = false;
            ffmpegProcess.StartInfo.RedirectStandardInput = true;
            ffmpegProcess.StartInfo.RedirectStandardOutput = true;
            ffmpegProcess.StartInfo.RedirectStandardError = true;
            ffmpegProcess.StartInfo.CreateNoWindow = true;
            ffmpegProcess.StartInfo.FileName = Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName) + @"\bin\ffmpeg.exe";
            ffmpegProcess.StartInfo.Arguments = "-i " + Path.GetFullPath(inputFile) + " -vn -f mp3 -ab 320k output " + Path.GetFullPath(outputFile);
            ffmpegProcess.Start();
            ffmpegProcess.StandardOutput.ReadToEnd();
            mp3out = ffmpegProcess.StandardError.ReadToEnd();
            //ffmpegProcess.WaitForExit();
            if (!ffmpegProcess.HasExited)
            {
                //ffmpegProcess.Kill();
            }
        }
        catch (InvalidOperationException e)
        {
            Console.WriteLine("mp3 conversion failed: " + e.Message);
            return "";
        }

        return mp3out;
    }

在这里如何保存使用f, ax = plt.subplots(1, 2) for i, img in enumerate([img1, img2]): grads = # my visualization codes # visualize grads as heatmap ax[i].imshow(grads, cmap='jet') 显示的内容?任何建议,我们将不胜感激!

1 个答案:

答案 0 :(得分:0)

保存整个图形很简单,只需使用savefig函数:

f.savefig('filename.png')

您可以保存许多文件格式,通常可以从文件名的扩展名中正确推断出这些文件格式。有关更多信息,请参见the documentation

savefig函数采用参数bbox_inches,该参数定义了要保存图形的区域。要将单个子图保存到文件中,可以使用子图的Axes对象的边界框来计算适当的值。

将所有内容放在一起,代码看起来像这样:

f, ax = plt.subplots(1, 2)
for i, img in enumerate([img1, img2]):    
    grads = # my visualization codes
    # visualize grads as heatmap
    ax[i].imshow(grads, cmap='jet')

    # Save the subplot.
    bbox = ax[i].get_tightbbox(f.canvas.get_renderer())
    f.savefig("subplot{}.png".format(i),
              bbox_inches=bbox.transformed(f.dpi_scale_trans.inverted()))

# Save the whole figure.
f.savefig("whole_figure.png")