我正在绘制一个包含多个列的pandas DataFrame,如下所示:
fig, ax = py.subplots(figsize=(11.7, 8.3))
df.plot(ax=ax, secondary_y=[A])
Run Code Online (Sandbox Code Playgroud)
我可以使用如下命令格式化主yaxis:
ax.yaxis.set_major_formatter(FormatStrFormatter('%d days'))
Run Code Online (Sandbox Code Playgroud)
如何将格式应用于辅助Y轴(右侧显示的格式)?
我试图在两个y轴上都贴上标签,一个是“ WLL”,另一个是“ S&P 500”。目前,我只能标记辅助y轴(S&P 500)。
import pandas as pd
from pandas import DataFrame
from matplotlib import pyplot as plt
import pandas.io.data as web
import datetime as dt
start = '2013-01-01'
end = dt.datetime.today()
df = web.DataReader('WLL', 'yahoo', start, end)
sp = web.DataReader('^GSPC', 'yahoo', start, end)
fig, ax1 = plt.subplots()
df['Close'].plot(ax=ax1,color='g',linewidth=1.0)
sp['Close'].plot(secondary_y=True, ax=ax1,color='b',linewidth=1.0)
ax = df['Close'].plot(); sp['Close'].plot(ax=ax, secondary_y=True)
plt.xlabel('xlabel', fontsize=10)
plt.ylabel('ylabel', fontsize=10)
plt.show()
Run Code Online (Sandbox Code Playgroud) 我想生成一个matplotlib折线图,其中两个变量分别显示在两个具有匹配网格线的y轴上。除了匹配的网格线部分,这一切都非常简单。以下是一些可复制的片段,包括最佳尝试。可以在末尾找到完整的代码段。
带有初始图的可重现数据框
遵循在matplotlib中向次要y轴添加y轴标签的建议,我可以生成以下代码:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# Dataframe with some random numbers
np.random.seed(123)
rows = 4
df = pd.DataFrame(np.random.randint(90,110,size=(rows, 2)), columns=list('AB'))
datelist = pd.date_range(pd.datetime(2017, 1, 1).strftime('%Y-%m-%d'), periods=rows).tolist()
df['dates'] = datelist
df = df.set_index(['dates'])
df.index = pd.to_datetime(df.index)
df['B'] = df['A'] * np.random.uniform(0.6,1.4, size = 4)
# Plot 1
fig, ax = plt.subplots()
t = df.index
ax.plot(t, df['A'])
ax2 = ax.twinx()
ax2.plot(t, df['B'], color='red')
ax2.yaxis.grid(which="major", color='green', linestyle='--')
ax.legend(loc='upper left')
ax2.legend(loc='upper right') …Run Code Online (Sandbox Code Playgroud)