plot - Julia 笔记本中的绘图和打印文本之间的冲突

标签 plot jupyter-notebook julia

我有一个 Julia Jupyter 笔记本,我可以在其中使用 Plots 生成图,例如,类似

thxpplot=plot(title=title,xlabel="T (K)",ylabel="V/V0")
thxpplot=plot!(Tplt,Vplt/V0,label=mat,color="red")
display((thxpplot))

还有文本输出,例如

@printf("%s: %s (%d atoms)\n","Material",mat,N)

令人烦恼的是,两个输出流似乎并不同步。经常发生这样的情况,特别是在比这更大的示例中,打印文本的一部分出现在绘图之前,其余部分出现在绘图之后,即使代码给出的一系列指令清楚地将两者分开。如何确保这些输出流之间的正确同步,或者换句话说,如何立即刷新输出缓冲区?我不认为这是 Python 笔记本中的问题。

托马斯

最佳答案

您可以使用以下命令刷新标准输出

flush(stdout)

但是,如果您将绘图与文本混合,请注意绘图使用 display 命令而不是 println,有时您可能仍会遇到同步问题,因为这些流已被处理由 Jupyter 单独提供。

这种情况下的解决方案是使用:

display("some text you want to display")

这样您就可以控制输出的顺序。

在您的情况下,您可能想使用:而不是@printf:

display(@sprintf("whatever you want to print"))

但是,这使用默认的 text/plain MIME 类型(并添加引号等)。

通过不同的 MIME 类型,您的结果可能会更好:

display("text/json", @sprintf("%s: %s (%d atoms)\n","Material",4,5))

或者您甚至可以使用 HTML

display("text/html", @sprintf("%s: <b>%s</b> (<b>%d</b> atoms)\n","Material",4,5))

关于plot - Julia 笔记本中的绘图和打印文本之间的冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63440947/

相关文章:

r - 向 scatter3d 图添加图例

Matlab 的 slice() 函数不能按预期工作

python - Tesseract 选项和图像预处理

visualization - 用 Julia 编程语言画图

julia - 分段/非连续范围?

r - 在网格中排列 8 个图和一个图例

r - for 循环中的格子图 - 创建的空图像

jupyter-notebook - Voila for Jupyter 引发错误 : raise NotImplementedError

python - 无法在笔记本中使用 tqdm_notebook

julia - 如何使用对 linspace 的推导来创建矩阵