从rmarkdown中的r块调用matplotlib时未显示图

时间:2020-03-25 05:21:17

标签: python matplotlib r-markdown

我具有以下使用python绘制某些矩阵的功能:

import os
import matplotlib.pyplot as plt
import numpy as np

def plot_freq_bin_mats(subject, freq_bins):
    fig = plt.figure(figsize=(8,8))
    for i, f in enumerate(freq_bins, start=1):
        subj_file = base_dir + subject + '_' + f + '.txt'
        print(subj_file)
        if os.path.exists(subj_file):
            freq_mat = np.loadtxt(subj_file, delimiter=',')
        else:
            freq_mat = np.zeros((46,46))
        ax = fig.add_subplot(3,4,i)
        ax.set_title("{0}".format(f))
        ax.spy(freq_mat, markersize=1, color='black')
        ax.set_yticks([])
        ax.set_xticks([])
    fig.tight_layout()
    fig.suptitle("{0}".format(subject), fontsize=14, y=1)
    plt.show()

我正在尝试使用Rmarkdown文档中R块中的代码,因此我可以利用par(mfrow)从for循环中创建网格布局。但是,当我从R块运行python源代码时,未显示任何图。我没有收到任何错误消息。以下是我尝试使用的代码:

source_python('/path/to/script.py')
plot_freq_bin_mats(py$all_subjects[1], py$freq_bins)

这是我的Rmarkdown设置:

knitr::opts_chunk$set(echo = TRUE)
knitr::knit_engines$set(python=reticulate::eng_python)
library(reticulate)
use_python('/opt/anaconda3/bin/python')
matplotlib <- import("matplotlib")
matplotlib$use("Agg", force = TRUE)

无论是否有最后一行,我都尝试过,但均无济于事。有没有办法显示Rmarkdown中R代码块中的matplotlib图?

0 个答案:

没有答案
相关问题