Ich versuche, ein Candlestick-Diagramm mit Matplotlib mit Daten, die ich für einen REST-API-Aufruf erhalte, zu plotten. Da der Aufruf jedoch ein eindeutiges Zugriffstoken verwendet, habe ich für diese Frage Beispieldaten heruntergeladen und in einen CSV geladen. Here is a pastebin link zu, wie die Beispieldaten aussehen. Um die Daten in Python zu verarbeiten, verwende ich Pandas, um Datenrahmen zu erstellen. Hier ist, was mein Code wie folgt aussieht:Matplotlib Candlestick (Intraday) Diagramm ist ein großer Blob
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
import matplotlib.dates as mdates
from matplotlib.finance import candlestick_ohlc
from datetime import date
""" Pandas """
historic_df = pd.read_csv("sample_data.csv")
dates = pd.to_datetime(historic_df['time'], format="%Y-%m-%dT%H:%M:%S.%fZ")
openp = historic_df['openAsk']
highp = historic_df['highAsk']
lowp = historic_df['lowAsk']
closep = historic_df['closeAsk']
""" Matplotlib """
ax1 = plt.subplot2grid((1,1), (0,0))
ax1.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M:%S'))
x = 0
ohlc = []
while x < len(dates):
d = mdates.date2num(dates[x])
append_me = d, openp.values[x], highp.values[x], lowp.values[x], closep.values[x]
ohlc.append(append_me)
x += 1
candlestick_ohlc(ax1, ohlc, width=0.4, colorup='#77d879', colordown='#db3f3f')
plt.show()
Und hier ist das, was meine Ausgabe wie folgt aussieht:
können Sie Art die vertikalen Linien für den Leuchter des ausmachen, aber die Bars scheint wirklich weit. Irgendwelche Ideen, wie ich das lösen kann? Vielen Dank.
funktioniert auf einigen Yahoo-Daten (unter Verwendung von Tagesdaten), bitte posten Sie Ihre aktuellen Daten. Alles, was ich getan habe, war, diese Zeile hier zu ändern: 'dates = pd.to_datetime (historic_df ['time'])' und es sieht gut aus. Aus irgendeinem Grund sieht es so aus, als würden Sie versuchen, mehrere Tage mit jeder Stunde auf einem Diagramm darzustellen, was die Überlappung erklären würde ... – Matt
Ich habe in meinem Post einen Link zum [pastebin] eingefügt (http: // pastebin .com/3Z26y9dA) mit den Daten, die zum Zeichnen des Diagramms verwendet wurden. Nicht sicher, ob es einen Unterschied macht, aber meine Daten im Intraday, so dass jeder Eintrag kein anderer Tag ist, sondern eher 5-10 Sekunden auseinander liegt. – ng150716