matplotlib 在同一图中绘制时间戳和索引

8e2ybdfx  于 2023-05-07  发布在  其他
关注(0)|答案(1)|浏览(139)

嗨,我想弄清楚你是否可以用matplotlib在同一个子图中的一个轴上绘制日期,在另一个轴上绘制相应的整数指数,例如,只有一个轴上的日期和价格和相应的整数指数的价格(到日期,在示例中为idx = np.arange(len(aapl)))。下面是一个股票信号的例子。

import yfinance as yf
import matplotlib.pyplot as plt

# Download Apple's stock price data
aapl = yf.download("AAPL", start="2022-01-01", end="2023-04-30")

# Plot the adjusted close price
plt.plot(aapl['Adj Close'])

# Set x-axis label, y-axis label, and title
plt.xlabel('Date')
plt.ylabel('Price')
plt.title('AAPL Stock Price')

# Display the plot
plt.show()
qvtsj1bj

qvtsj1bj1#

您可以通过使用ax2=ax.twiny()(doc here)设置双轴(ax2)来实现这一点。创建新轴后,您可以使用ax2.set_xticks()放置所需的标签(参见文档here)。
下面是应用于您的示例的完整代码:

import yfinance as yf
import matplotlib.pyplot as plt
import numpy as np

# Download Apple's stock price data
aapl = yf.download("AAPL", start="2022-01-01", end="2023-04-30")

fig,ax=plt.subplots()
# Plot the adjusted close price
plt.plot(aapl['Adj Close'])

# Set x-axis label, y-axis label, and title
ax.set_xlabel('Date')
ax.set_ylabel('Price')
ax.set_title('AAPL Stock Price')

ax2=ax.twiny()
N_pts=len(aapl['Adj Close'])
tcks=np.linspace(0,1,N_pts) #tick positions
labs=np.arange(N_pts) #tick labels
freq=20 #tick frequency

ax2.set_xticks(tcks[::freq],labs[::freq])#set up ticks
ax2.set_xlabel('index') #label the new axis
# Display the plot
plt.tight_layout()
plt.show()

相关问题