问题:
我试图掌握猴子修补的概念,同时制作一个函数来产生完美的时间序列图。如何在 pandas pandas.DataFrame.plot() 中包含以下 matplotlib 功能?
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['bottom'].set_visible(False)
ax.spines['left'].set_visible(False)
complete code at the end of the question
细节:
我认为 中的默认设置df.plot()非常简洁,尤其是当您运行带有深色主题的 Jupyter Notebook 时,例如来自dunovank 的chesterish:
我想尽可能多地将它用于我的数据分析工作流程,但我真的很想像这样删除框架(或所谓的刺):
可以说,这是一个完美的时间序列图。但df.plot()
对此没有内置参数。最接近的似乎是grid = False
,但这会在同一次运行中带走整个网格:
我试过的
我知道我可以将spine代码片段包装在一个函数中,df.plot()所以我最终得到了这个:
片段 1:
def plotPerfect(df, spline):
ax = df.plot()
if not spline:
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['bottom'].set_visible(False)
ax.spines['left'].set_visible(False)
return(ax)
plotPerfect(df = df, spline = False)
输出 1:
但就未来修订的灵活性和可读性而言,这是“最佳”方式吗?如果我们谈论数百个情节,甚至在执行时间方面是最快的?
我知道如何获得df.plot() 源代码,但是那里的所有内容都让我感到困惑。那么,如何做我包括这些设置df.plot?也许包装函数方法和猴子补丁一样好?
包含完整代码和示例数据的片段:
要 100% 重现示例,请将其粘贴到带有chesterish theme激活的 Jupyter Notebook 单元格中:
# imports
import pandas as pd
import numpy as np
from jupyterthemes import jtplot
# Sample data
np.random.seed(123)
rows = 50
dfx = pd.DataFrame(np.random.randint(90,110,size=(rows, 1)), columns=['Variable Y'])
dfy = pd.DataFrame(np.random.randint(25,68,size=(rows, 1)), columns=[' Variable X'])
df = pd.concat([dfx,dfy], axis = 1)
jtplot.style()
# Plot with default settings
df.plot()
# Wrap df.plot() and matplotlib spine in a function
def plotPerfect(df, spline):
ax = df.plot()
if not spline:
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['bottom'].set_visible(False)
ax.spines['left'].set_visible(False)
return(ax)
# Plot the perfect time-series plot
plotPerfect(df = df, spline = False)
慕少森
RISEBY
相关分类