Свечной график — это тип финансового графика, который отображает движение цен ценных бумаг во времени.
В следующем примере показано, как создать свечную диаграмму с помощью библиотеки визуализации 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()

Каждая свеча представляет движение цены ценной бумаги в определенный день. Цвет свечи говорит нам, закрылась ли цена выше (зеленый) или ниже (красный), чем в предыдущий день.
Не стесняйтесь изменять ширину свечей и цвета, используемые для отображения графика, как вам хочется.
Например, мы могли бы сделать свечи еще тоньше и использовать разные цвета для обозначения дней «вверх» и «вниз»:
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