AI用Cufflinks绘制交互式图像
编辑
1
2025-06-22

提示词
现在有一个DataFrame,其中一列是股票的每日收盘价,我希望用Cufflinks和Plotly绘制交互式图表,请给出示例代码。
答案
# 安装必要库(如未安装)
# pip install cufflinks plotly pandas
import pandas as pd
import cufflinks as cf
from plotly.offline import iplot
# 初始化Cufflinks
cf.go_offline() # 设置离线模式[5,6](@ref)
cf.set_config_file(theme='pearl') # 设置主题样式
# 示例数据(替换为您的DataFrame)
data = {
'收盘': [100, 102, 101, 105, 110, 108, 112],
'开盘': [99, 101, 105, 103, 108, 112, 110],
'最高': [102, 104, 106, 108, 112, 115, 114],
'最低': [98, 100, 101, 102, 107, 106, 109]
}
df = pd.DataFrame(data, index=pd.date_range('2024-01-01', periods=7))
# 1. 基础折线图(收盘价)
df[['收盘']].iplot(
kind='line',
title='股票收盘价走势',
xTitle='日期',
yTitle='价格',
legend=True,
mode='lines+markers' # 同时显示线条和标记点[1,6](@ref)
)
# 2. 带技术指标的综合图表
# 确保列名正确
df = df.rename(columns={'收盘': 'close', '开盘': 'open', '最高': 'high', '最低': 'low'})
qf = cf.QuantFig(df, title='股票技术分析', legend=True)
qf.add_sma(periods=5, color='blue') # 添加5日均线[1](@ref)
qf.add_bollinger_bands(periods=20) # 添加布林带[6](@ref)
qf.add_rsi(periods=14, showbands=True) # 添加RSI指标
qf.iplot()
# 3. K线图(需包含OHLC数据)
df[['open','high','low','close']].iplot(
kind='candle',
title='K线图',
up_color='green', # 上涨颜色
down_color='red' # 下跌颜色[4,6](@ref)
)
图像:
完成的不错。本来只要他做第一个折线图来的。
绘制子图
提示词
一个DataFrame中包含股票的收盘价和简单收益,请用Cufflinks绘制图形,以两行子图的形式绘制这两列数据,且共享x轴。
答案
import pandas as pd
import cufflinks as cf
from plotly.subplots import make_subplots
# 初始化 Cufflinks
cf.go_offline()
# 示例数据(替换为你的 DataFrame)
dates = pd.date_range('2024-01-01', periods=30)
df = pd.DataFrame({
'close': [100 + i*2 + (-1)**i*5 for i in range(30)], # 模拟收盘价
'return': [0.02, -0.01, 0.03, 0.015, -0.02]*6 # 模拟简单收益
}, index=dates)
# 创建子图布局(2 行 1 列,共享 x 轴)
fig = make_subplots(
rows=2, cols=1,
shared_xaxes=True,
vertical_spacing=0.1,
subplot_titles=('收盘价走势', '简单收益波动')
)
# 绘制收盘价子图
close_fig = df[['close']].iplot(
asFigure=True, # 返回 Plotly Figure 对象
kind='line',
color='blue',
xTitle='日期',
yTitle='价格',
showlegend=False
)
fig.add_traces(close_fig.data, rows=1, cols=1)
# 绘制收益子图
return_fig = df[['return']].iplot(
asFigure=True,
kind='scatter', # 散点图更清晰展示波动
mode='lines+markers',
color='green',
fill=True, # 填充面积增强可视化
opacity=0.7, # 70% 透明度
yTitle='收益',
showlegend=False
)
fig.add_traces(return_fig.data, rows=2, cols=1)
# 统一布局设置
fig.update_layout(
height=800,
title_text='股票分析双视图',
hovermode='x unified' # 鼠标悬停时显示双图数据
)
# 同步 x 轴范围
fig.update_xaxes(range=[df.index.min(), df.index.max()])
# 显示图表
fig.show()
图像:
- 0
- 0
-
赞助
支付宝
微信
-
分享