Python绘制Efficient Frontier:如何将散点连接为曲线?
解决有效前沿散点连曲线的问题
你已经完成了数据按波动率排序的关键步骤,只需要调整Plotly的绘图方式就能把散点连接成平滑曲线,以下是两种实用方案:
方案一:用Plotly Express快速实现带散点的连线图
直接将px.scatter替换为px.line,并开启markers=True参数,这样既能生成连线,又能保留原始散点:
import plotly.express as px import pandas as pd # 按波动率排序确保曲线平滑 data = data.sort_values(by="Volatility") # 绘制带散点的有效前沿曲线 fig = px.line(data, x="Volatility", y="Returns", title="有效前沿(风险-收益权衡)", markers=True) # 保留散点显示 fig.show()
方案二:用Graph Objects自定义曲线和散点样式
如果需要更灵活地调整线条、散点的颜色、大小等样式,可以使用Plotly Graph Objects分别添加连线和散点图层:
import plotly.graph_objects as go import pandas as pd data = data.sort_values(by="Volatility") fig = go.Figure() # 添加有效前沿连线 fig.add_trace(go.Scatter( x=data["Volatility"], y=data["Returns"], mode="lines", name="有效前沿曲线", line=dict(color="blue", width=2) )) # 添加组合散点 fig.add_trace(go.Scatter( x=data["Volatility"], y=data["Returns"], mode="markers", name="投资组合点", marker=dict(color="red", size=6) )) # 调整图表布局 fig.update_layout( title="有效前沿(风险-收益权衡)", xaxis_title="波动率(风险)", yaxis_title="收益率" ) fig.show()
两种方案都能基于你排序后的数据生成流畅的子弹头形状有效前沿曲线,选择适合你需求的即可。
内容的提问来源于stack exchange,提问作者nani869
相关产品推荐
相关产品推荐

