python - matplotlib 以自定义日期格式和间隔显示 x 轴
问题描述
使用 matplotlib 和 mpl_finance 绘制烛台。数据在 csv AAPL中。
我只想将 x 轴显示为年和月,即“yyyy-mmm”,所以:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_finance import candlestick2_ohlc
import matplotlib.dates as mdates
data = pd.read_csv('C:\\AAPL.csv', delimiter = "\t")
data = data.sort_values(['Date'], ascending=True)
data = data.tail(100)
fig = plt.figure(figsize=(6,4))
plt.ylim(60, 200)
ax1 = fig.add_subplot(111)
cl =candlestick2_ohlc(ax=ax1,opens=data['Open'],highs=data['High'],lows=data['Low'],closes=data['Close'],width=0.6)
ax1.set_xticks(np.arange(len(data)))
ax1.set_xticklabels(data['Date'], fontsize=10, rotation=90)
# every month of the year like 2008-Jan, 2008-Feb...
locator = mdates.MonthLocator()
fmt = mdates.DateFormatter('%Y-%b')
X = plt.gca().xaxis
X.set_major_locator(locator)
X.set_major_formatter(fmt)
plt.show()
它没有显示任何东西。
也在下面尝试过,但也不起作用:
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m/%d/%Y'))
plt.gca().xaxis.set_major_locator(mdates.DayLocator())
如何让 x 轴只显示年份和月份?
谢谢你。
解决方案
尝试以下解决方案,
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_finance import candlestick_ohlc
import matplotlib.dates as mdates
data = pd.read_csv('C:\AAPL.csv')
data = data.sort_values(['Date'], ascending=True)
data = data.tail(100)
from matplotlib.dates import date2num, DayLocator, DateFormatter
data['Date'] = date2num(pd.to_datetime(data['Date']).tolist())
fig, ax=plt.subplots(figsize=(10, 10))
candlestick_ohlc(ax, data.as_matrix(),width=0.6)
ax.set(xlabel='AAPL')
ax.xaxis.set_major_locator(DayLocator())
ax.xaxis.set_major_formatter(DateFormatter('%Y-%b'))
ax.xaxis.set_major_locator(mdates.WeekdayLocator(interval=4))
plt.show()
注意:我使用的是烛台_ohlc 而不是烛台2_ohlc。
输出 :
推荐阅读
- google-cloud-platform - GCP AI Notebook Platform ModuleNotFoundError
- javascript - 管理角色用户 - [Angular]
- flutter - Flutter ''http'' 总是给我 503 状态码
- r - 如何将列标题及其值拆分为长格式的单独列
- php - PHP Dotenv 的路径问题
- python - Pandas 获取给定字符串的 1 和 0 序列
- java - 是否可以构造一个 Java 流表达式来返回一个 2D 布尔数组,所有值都设置为 true?
- ballerina - 尝试运行新的芭蕾舞女演员项目时出现 IOException
- reactjs - 如何在悬停时更改样式组件的前内容 [emotion.js,样式组件]
- ios - UICollectionView 流布局未定义