我具有以下使用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图?