MPF Ploting CandleStick

时间:2018-06-04 01:35:01

标签: python pandas matplotlib

我需要帮助理解以下代码并解决错误。

import matplotlib.finance as mpf
import pandas_datareader as web
import datetime
import matplotlib.pyplot as plt

import pandas as pd

import matplotlib.dates as mdates

start = datetime.datetime(2018, 5, 1)
end = datetime.datetime(2018, 5, 31)
df = web.get_data_morningstar("nvda",  start, end)
df.reset_index(inplace=True)

df = df.drop('Symbol',axis=1)

df.Date = pd.to_datetime(df.Date)

df = df[['Date', 'Open', 'High', 'Low', 'Close', 'Volume']]

df["Date"] = df["Date"].apply(mdates.date2num)
quotes = [tuple([df.Date,
                 df.Open,
                 df.High,
                 df.Low,
                 df.Close,
                 df.Volume]) ]
#print(quotes)
fig, ax = plt.subplots(figsize=(8, 5))
#fig.subplots_adjust(bottom=0.2)
mpf.candlestick_ohlc(ax, quotes, width=0.6, colorup='b', colordown='r')
plt.grid(True)
ax.xaxis_date()
ax.autoscale_view()
plt.setp(plt.gca().get_xticklabels(), rotation=30)
plt.show()

错误是" ValueError:系列的真值是不明确的。使用a.empty,a.bool(),a.item(),a.any()或a.all()。"烛台函数调用发生错误。

1 个答案:

答案 0 :(得分:0)

问题是引用。 [date, open, high, low, close, volume] 期望包含如下元素的列表或元组:

dates

但是,你的引号只有一个元素,即元组。如果您删除外部列表,则引号包含6个元素,opensquotes = df.values.tolist() ,...

要解决此问题,请创建如下引号:

private void textBox2_TextChanged(object sender, EventArgs e)
{
    try
    {
        string text = textBox2.Text;
        string deshsign = "-";
        string c = text.Insert(5, deshsign);
        textBox2.Text = c;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

这样,它产生一个带有4个烛台的图形(这里没有显示它,因为我不得不大量调整数据以使其运行)。