Как создать свечной график с помощью Matplotlib в Python

Как создать свечной график с помощью Matplotlib в Python

Свечной график — это тип финансового графика, который отображает движение цен ценных бумаг во времени.

В следующем примере показано, как создать свечную диаграмму с помощью библиотеки визуализации Matplotlib в Python.

Пример: создание свечного графика в Python

Предположим, у нас есть следующий кадр данных pandas, который показывает цены открытия, закрытия, максимума и минимума определенной акции в течение 8-дневного периода:

import pandas as pd

#create DataFrame
prices = pd.DataFrame({'open': [25, 22, 21, 19, 23, 21, 25, 29],
 'close': [24, 20, 17, 23, 22, 25, 29, 31],
 'high': [28, 27, 29, 25, 24, 26, 31, 37],
 'low': [22, 16, 14, 17, 19, 18, 22, 26]},
 index=pd.date_range (" 2021-01-01", periods=8, freq=" d "))

#display DataFrame
print(prices)

 open close high low
2021-01-01 25 24 28 22
2021-01-02 22 20 27 16
2021-01-03 21 17 29 14
2021-01-04 19 23 25 17
2021-01-05 23 22 24 19
2021-01-06 21 25 26 18
2021-01-07 25 29 31 22
2021-01-08 29 31 37 26

Мы можем использовать следующий код для создания свечного графика, чтобы визуализировать движение цены этой акции в течение этого 8-дневного периода:

import matplotlib.pyplot as plt

#create figure
plt.figure()

#define width of candlestick elements
width = .4
width2 = .05

#define up and down prices
up = prices[prices. close >=prices. open ]
down = prices[prices. close <prices. open ]

#define colors to use
col1 = 'green '
col2 = 'red '

#plot up prices
plt.bar (up. index ,up. close -up. open ,width,bottom=up. open ,color=col1)
plt.bar (up. index ,up. high -up. close ,width2,bottom=up. close ,color=col1)
plt.bar (up. index ,up. low -up. open ,width2,bottom=up. open ,color=col1)

#plot down prices
plt.bar (down. index ,down. close -down. open ,width,bottom=down. open ,color=col2)
plt.bar (down. index ,down. high -down. open ,width2,bottom=down. open ,color=col2)
plt.bar (down. index ,down. low -down. close ,width2,bottom=down. close ,color=col2)

#rotate x-axis tick labels
plt.xticks (rotation= 45 , ha='right')

#display candlestick chart
plt.show() 
Свечной график с использованием matplotlib в Python

Каждая свеча представляет движение цены ценной бумаги в определенный день. Цвет свечи говорит нам, закрылась ли цена выше (зеленый) или ниже (красный), чем в предыдущий день.

Не стесняйтесь изменять ширину свечей и цвета, используемые для отображения графика, как вам хочется.

Например, мы могли бы сделать свечи еще тоньше и использовать разные цвета для обозначения дней «вверх» и «вниз»:

import matplotlib.pyplot as plt

#create figure
plt.figure()

#define width of candlestick elements
width = .2
width2 = .02

#define up and down prices
up = prices[prices. close >=prices. open ]
down = prices[prices. close <prices. open ]

#define colors to use
col1 = 'black '
col2 = 'steelblue '

#plot up prices
plt.bar (up. index ,up. close -up. open ,width,bottom=up. open ,color=col1)
plt.bar (up. index ,up. high -up. close ,width2,bottom=up. close ,color=col1)
plt.bar (up. index ,up. low -up. open ,width2,bottom=up. open ,color=col1)

#plot down prices
plt.bar (down. index ,down. close -down. open ,width,bottom=down. open ,color=col2)
plt.bar (down. index ,down. high -down. open ,width2,bottom=down. open ,color=col2)
plt.bar (down. index ,down. low -down. close ,width2,bottom=down. close ,color=col2)

#rotate x-axis tick labels
plt.xticks (rotation= 45 , ha='right')

#display candlestick chart
plt.show() 

Дополнительные ресурсы

В следующих руководствах объясняется, как создавать другие распространенные диаграммы в Python:

Как создать несколько графиков Matplotlib на одном рисунке
Как построить гистограмму из списка данных в Python
Как создавать блок-схемы по группам в Python

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.