【发布时间】:2021-06-14 01:58:05
【问题描述】:
我正在尝试抑制在下面的代码中运行的输出/绘图(因为我计划稍后调整绘图),但无论我尝试了什么,似乎都没有任何效果。
我已经根据参考文章尝试了以下所有方法(乱扔我的代码,需要清理),但似乎没有任何效果。
- 添加分号
- 通过;声明
- 调整笔记本的环境条件
- 使用子流程函数和修改后的抑制函数
相关SO:
- Remove output of all subprocesses in Python without access to code
- Silence the stdout of a function in Python without trashing sys.stdout and restoring each function call
- Python: Suppress library output not using stdout
- IPython, semicolon to suppress output does not work
- https://github.com/ipython/ipython/issues/10794
- Suppress output in matplotlib
dictionary_of_figures = OrderedDict()
dictionary_of_images = OrderedDict()
from contextlib import contextmanager
import sys, os
import subprocess
import inspect
import contextlib
import io
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import matplotlib.ticker as ticker
from collections import OrderedDict
def draw_year_close_plot(df, group_by_column_name, year):
reduced_range = df.loc[(df['Year'] == year)]
year_string = str(year)
# 0 - Setup
matplotlib.rc_file_defaults();
ax1 = sns.set_style("darkgrid"); #"style must be one of white, dark, whitegrid, darkgrid, ticks"
fig, ax1 = plt.subplots(figsize=(5,2));
# 1 - Create Closing Plot
lineplot = sns.lineplot(data = reduced_range['Close'], sort = False, ax=ax1);
pass;
ax1.xaxis.set_major_formatter(ticker.EngFormatter())
lineplot.set_title(company_name + str(" (")+ stock_ticker + str(") - ") + 'Historical Close & Volume - ' + year_string, fontdict= { 'fontsize': 8, 'fontweight':'bold'})
# 2 - Create Secondary Plot - Volume
ax2 = ax1.twinx();
ax2.grid(False);
sns.lineplot(data = reduced_range['Volume'], sort = False, ax=ax2, alpha=0.15);
pass;
return fig
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "last_expr"
#@contextmanager
#def suppress_stdout():
# with open(os.devnull, "w") as devnull:
# old_stdout = sys.stdout
# sys.stdout = devnull
# try:
# yield
# finally:
# sys.stdout = old_stdout
#@contextlib.contextmanager
#def nostdout():
# save_stdout = sys.stdout
# sys.stdout = io.BytesIO()
# yield
# sys.stdout = save_stdout
with contextlib.redirect_stdout(io.StringIO()):
for year in range(min_year,min_year+5):
dictionary_of_figures[year] = draw_year_close_plot(daily_df,'Year', year);
dictionary_of_images[year] = fig2img(dictionary_of_figures[year]);
有什么想法吗?
【问题讨论】:
-
命名空间“sns”从何而来?
-
@labroid - 它来自 seaborn - 我在代码中添加了这些额外的导入语句。
标签: python plot jupyter-notebook hide suppress