Python 语言 用 Plotly 制作交互式股票 K 线图 支持缩放 / 悬停

Python阿木 发布于 16 小时前 2 次阅读


Python 交互式股票 K 线图制作教程:使用 Plotly

K 线图,又称蜡烛图,是股票市场中常用的一种图表,用于展示股票价格走势。它通过不同颜色和形状的蜡烛来表示价格的开盘、收盘、最高和最低点。Python 作为一种强大的编程语言,结合 Plotly 库,可以轻松制作出交互式且功能丰富的股票 K 线图。本文将详细介绍如何使用 Python 和 Plotly 制作一个支持缩放和悬停功能的交互式股票 K 线图。

准备工作

在开始之前,请确保您已经安装了以下 Python 库:

- `pandas`:用于数据处理。
- `plotly`:用于绘图。
- `yfinance`:用于从 Yahoo Finance 获取股票数据。

您可以使用以下命令安装这些库:

bash
pip install pandas plotly yfinance

数据获取

我们需要获取股票数据。这里我们使用 `yfinance` 库来获取数据。

python
import yfinance as yf

获取股票数据
stock = yf.Ticker("AAPL")
data = stock.history(period="1mo")

这里我们以苹果公司(AAPL)为例,获取了最近一个月的股票数据。

创建 K 线图

接下来,我们将使用 Plotly 创建 K 线图。我们需要将股票数据转换为 Plotly 可以识别的格式。

python
import pandas as pd

将数据转换为 Plotly 可识别的格式
df = data.copy()
df.reset_index(inplace=True)
df.columns = ['Date', 'Open', 'High', 'Low', 'Close', 'Volume']

将日期转换为 Plotly 可识别的格式
df['Date'] = pd.to_datetime(df['Date'])
df.sort_values('Date', inplace=True)

现在,我们可以使用 Plotly 创建 K 线图了。

python
import plotly.graph_objects as go

创建 K 线图
fig = go.Figure(data=[go.Candlestick(x=df['Date'], open=df['Open'], high=df['High'], low=df['Low'], close=df['Close'])])

设置标题和布局
fig.update_layout(title='AAPL Stock Price', xaxis_title='Date', yaxis_title='Price')

显示图表
fig.show()

添加交互功能

为了使 K 线图具有交互性,我们可以添加缩放和悬停功能。

python
添加缩放和悬停功能
fig.update_layout(
xaxis=dict(
type='date',
range=[df['Date'].min(), df['Date'].max()],
showgrid=False,
zeroline=False,
showticklabels=True,
ticks='outside',
tickformat='%Y-%m-%d',
title='Date'
),
yaxis=dict(
title='Price',
showgrid=False,
zeroline=False,
showticklabels=True,
ticks='outside',
title='Price'
),
hovermode='closest'
)

显示图表
fig.show()

优化图表

为了使图表更加美观和易读,我们可以进行以下优化:

1. 调整蜡烛颜色:根据开盘价和收盘价的关系,我们可以调整蜡烛的颜色。

python
调整蜡烛颜色
fig.update_traces(
fillcolor='green' if x['Close'] >= x['Open'] else 'red',
linecolor='black'
)

2. 添加图例:为蜡烛图添加图例,以便用户了解不同颜色的含义。

python
添加图例
fig.update_layout(
legend_title_text='Candlestick',
legend_traceorder='reversed'
)

3. 调整字体和颜色:调整标题、轴标签和图例的字体和颜色。

python
调整字体和颜色
fig.update_layout(
font=dict(
family='Arial',
size=12,
color='black'
),
title_font=dict(
family='Arial',
size=16,
color='black'
),
xaxis_title_font=dict(
family='Arial',
size=14,
color='black'
),
yaxis_title_font=dict(
family='Arial',
size=14,
color='black'
),
legend_title_font=dict(
family='Arial',
size=12,
color='black'
)
)

总结

通过以上步骤,我们已经成功地使用 Python 和 Plotly 制作了一个具有缩放和悬停功能的交互式股票 K 线图。您可以根据自己的需求,进一步优化和调整图表的样式和功能。希望本文对您有所帮助!