python橫坐標日期
1. python量化教程:不得不學的K線圖「代碼復制可用」
不管是對量化分析師還是普通的投資者來說,K線圖(蠟燭圖)都是一種很經典、很重要的工具。在K線圖中,它會繪制每天的最高價、最低價、開盤價和收盤價,這對於我們理解股票的趨勢以及每天的多空對比很有幫助。
一般來說,我們會從各大券商平台獲取K線圖,但是這種情況下獲得的K線圖往往不能靈活調整,也不能適應復雜多變的生產需求。因此我們有必要學習一下如何使用Python繪制K線圖。
需要說明的是,這里mpl_finance是原來的matplotlib.finance,但是現在獨立出來了(而且好像沒什麼人維護更新了),我們將會使用它提供的方法來繪制K線圖;tushare是用來在線獲取股票數據的庫;matplotlib.ticker中有個FuncFormatter()方法可以幫助我們調整坐標軸;matplotlib.pylab.date2num可以幫助我們將日期數據進行必要的轉化。
我們以上證綜指18年9月份以來的行情為例。
我們先使用mpl_finance繪制一下,看看是否一切正常。
可以看到,所有的節假日包括周末,在這里都會顯示為空白,這對於我們圖形的連續性非常不友好,因此我們要解決掉他們。
可以看到,空白問題完美解決,這里我們解釋一下。由於matplotlib會將日期數據理解為 連續數據 ,而連續數據之間的間距是有意義的,所以非交易日即使沒有數據,在坐標軸上還是會體現出來。連續多少個非交易日,在坐標軸上就對應了多少個小格子,但這些小格子上方並沒有相應的蠟燭圖。
明白了它的原理,我們就可以對症下葯了。我們可以給橫坐標(日期)傳入連續的、固定間距的數據,先保證K線圖的繪制是連續的;然後生成一個保存有正確日期數據的列表,接下來,我們根據坐標軸上的數據去取對應的正確的日期,並替換為坐標軸上的標簽即可。
上邊format_date函數就是這個作用。由於前邊我們給dates列生成了從0開始的序列連續數據,因此我們可以直接把它當作索引,從真正的日期列表裡去取對應的數據。在這里我們要使用matplotlib.ticker.FuncFormattter()方法,它允許我們指定一個格式化坐標軸標簽的函數,在這個函數里,我們需要接受坐標軸的值以及位置,並返回自定義的標簽。
你學會了嗎?
當然,一個完整的K線圖到這里並沒有結束,後邊我們會考慮加入均線、成交量等元素,感興趣的同學歡迎關注哦!
2. python中使用plt.bar畫出的圖橫坐標是1-10的,我如何畫出2,4,6,8這樣空兩個的橫坐標
最簡單的柱狀代碼應該是這樣的
# coding: utf-8
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randint(0, 10, size=10)
y = np.random.randint(100, 1000, size=10)
plt.bar(x, y)
plt.show()
3. 怎樣用python畫一個以時間為橫坐標的圖
1. 前言
當日期數據作為圖表的坐標軸時通常需要特殊處理,應為日期字元串比較長,容易產生重疊現象
2. 設定主/次刻度
2.1 引用庫
from matplotlib.dates import DateFormatter, WeekdayLocator, DayLocator, MONDAY,YEARLY1
2.2 獲取每月/周/日數據
獲取每月一日數據
monthdays = MonthLocator()1
獲取每周一的日期數據
mondays = WeekdayLocator(MONDAY) # 主要刻度12
獲取每日數據
alldays = DayLocator() # 次要刻度12
2.3 設定主/次刻度
ax.xaxis.set_major_locator(mondays)
ax.xaxis.set_minor_locator(alldays)12
2.4 設定格式
mondayFormatter = DateFormatter('%Y-%m-%d') # 如:2-29-2015
dayFormatter = DateFormatter('%d') # 如:12
ax.xaxis.set_major_formatter(mondayFormatter)1234
3. 字元串旋轉
for label in ax1.get_xticklabels(): label.set_rotation(30) label.set_horizontalalignment('right')123
4. 效果
4. Python的 matplotlib畫圖,怎麼把子圖的每個橫坐標顯示出來
ax = subplots(nrows,ncols,sharex,sharey,squeeze,subplot_kw,gridspec_kw,**fig_kw)
創建畫布和子圖。
nrows和ncols表示將畫布分割成幾行幾列 ,
sharex和sharey表是共用xy軸的設置。
squeeze bool
a.默認參數為True:額外的維度從返回的Axes(軸)對象中擠出,對於N*1或1*N個子圖,返回一個1維數組,對於N*M,N>1和M>1返回一個2維數組。
b.為False,不進行擠壓操作:返回一個元素為Axes實例的2維數組,即使它最終是1x1。
subplot_kw:字典類型,可選參數。把字典的關鍵字傳遞給add_subplot()來創建每個子圖。
subplot_kw:字典類型,可選參數。把字典的關鍵字傳遞給add_subplot()來創建每個子圖。
gridspec_kw:字典類型,可選參數。把字典的關鍵字傳遞給GridSpec構造函數創建子圖放在網格里(grid)。
**fig_kw:把所有詳細的關鍵字參數傳給figure()函數。
可見你沒有辦法單獨設置某個子圖的ax的。
5. python3 折線圖上如何顯示特殊數據
# encoding=utf-8
import matplotlib.pyplot as plt
# 月份
x1 = ['2017-01', '2017-02', '2017-03', '2017-04', '2017-05', '2017-06', '2017-07', '2017-08',
'2017-09', '2017-10', '2017-11', '2017-12']
# 體重
y1 = [86, 85, 84, 80, 75, 70, 70, 74, 78, 70, 74, 80]
# 設置畫布大小
plt.figure(figsize=(16, 4))
# 標題
plt.title("my weight")
# 數據
plt.plot(x1, y1, label='weight changes', linewidth=3, color='r', marker='o',
markerfacecolor='blue', markersize=20)
# 橫坐標描述
plt.xlabel('month')
# 縱坐標描述
plt.ylabel('weight')
# 設置數字標簽
for a, b in zip(x1, y1):
plt.text(a, b, b, ha='center', va='bottom', fontsize=20)
plt.legend()
plt.show()