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 线图。您可以根据自己的需求,进一步优化和调整图表的样式和功能。希望本文对您有所帮助!
Comments NOTHING