[英]How can I plot specific points on top of another line plot?
我是一名交易員,我想跟蹤基礎證券價格走勢的所有 position 切入點。 例如,到目前為止,這是我的 BTC position 的代碼。 我導入我的庫,加載我的數據,然后我 plot 最近幾個月收盤價數據的范圍。 一切都是我想要的,但我不知道如何 plot 我的 position 條目。
這是代碼和output:
# Libraries
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as mtick
import yfinance as yf
# Data load
BTC = yf.download(tickers='BTC-USD', start='2020-10-01', end='2021-05-03')
BTC_close = BTC['Close']
print(BTC.head())
BTC_positions = yf.download(tickers='BTC-USD', start='2021-02-01', end='2021-05-03')
MyBTC = BTC_positions['Close']
df_RAW = pd.DataFrame(BTC_positions, columns=['Date','Close'])
# Plot
fig = plt.figure()
f, ax = plt.subplots(1,1)
ax.tick_params(length=3, direction='in', labelsize=10)
fmt = '${x:,.0f}'
tick = mtick.StrMethodFormatter(fmt)
ax.yaxis.set_major_formatter(tick)
ax.xaxis.set_tick_params(direction='in')
MyBTC.plot(figsize=(12, 7))
plt.xticks(rotation=0)
plt.title("Bitcoin Position Entries", fontsize=20)
plt.xlabel('Day',fontsize=13) # or fontsize=10
plt.ylabel('Price $$$',fontsize=13) # or fontsize=10
plt.show()
Output plot:原始數據 plot 我想要 Z32FA6E1B78A9D4028953E 53E 上的 5 個條目
我試過合並2個不同的字典:
帶有鍵的字典 1:輸入日期的值對:花費的金額
Dict1 = {
'2021-02-17': 250,
'2021-02-24': 250,
'2021-02-28': 50,
'2021-03-08': 500,
'2021-04-10': 500,
'2021-04-14': 120,
'2021-04-17': 400,
'2021-04-21': 120,
'2021-04-22': 875,
'2021-04-23': 300,
'2021-04-29': 125
}
字典 2 的鍵:輸入日期的值對:底層證券的價格
Dict2 = {
'Date': ['2021-02-17','2021-02-24','2021-02-28','2021-03-08','2021-04-10','2021-04-14','2021-04-17','2021-04-21','2021-04-22','2021-04-23','2021-04-29'],
'Price': [51280, 49426, 44548, 50840, 60251, 62479, 53637, 55946, 51376, 48080, 53955]
}
我面臨的問題是我在 2 月 17 日購買了價值 250 美元的商品,但我希望該點以合適的入場價格出現,即 51,280 美元,因此 y 軸超出比例。 我在想我可以 plot 點並根據購買的數量改變它們的大小或顏色漸變(較小的購買 = 小/亮點,較大的購買 = 大/暗點)
我嘗試創建一個 DataFrame 因為我認為這會更容易,但我只是讓自己更加困惑。
我已經走到了這一步,完全不知道如何 go 關於它。 我以為我在使用 Dict1 和 Dict2 時走在正確的軌道上,但現在我感到更加困惑。 任何有關如何 go 的幫助將不勝感激。
遍歷Dict1.items()
以從MyBTC
dataframe 獲取date
和Close
價(您也可以使用annotate
添加您從Dict1
購買的價格)。 然后,將scatter
function 應用到 plot 特定點上已經存在的線 plot 頂部。 此 function 將標記放置在 x 軸上由date
給出的位置,y 軸上放置收盤價(來自closep
的MyBTC
),並且像往常一樣對於某些 matplotlib,您可以設置標記形狀、大小( linewidths
)和顏色。
...
...
plt.xlabel('Day',fontsize=13) # or fontsize=10
plt.ylabel('Price $$$',fontsize=13) # or fontsize=10
for date,buy_price in Dict1.items():
closep = MyBTC[date]
plt.annotate(str(buy_price), (date, closep), xytext=(-3, 6),
textcoords='offset points', weight='bold', fontsize=12)
plt.scatter(date, closep, marker='v', linewidths=1, color='r')
plt.show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.