import dash
from dash import dcc, html
from dash.dependencies import Input, Output
import plotly.graph_objs as go
import numpy as np
# 初始化Dash應用
app = dash.Dash(__name__)
# 定義價格範圍和供應曲線的參數
def supply_curve(price):
# 供應曲線函數 (假設線性)
return 0.5 * price # 供應量 = 0.5 * 價格
# 定義應用的布局
app.layout = html.Div([
html.H1("生產者剩餘圖表"),
# 輸入框來手動調整價格
dcc.Input(id='price-input', type='number', value=10, step=0.1, min=0, max=50),
html.Div(id='price-output', style={'padding': '10px'}),
# 顯示價格的供應曲線圖表
dcc.Graph(id='supply-graph'),
])
# 設置更新圖表的回調
@app.callback(
Output('price-output', 'children'),
Output('supply-graph', 'figure'),
Input('price-input', 'value')
)
def update_graph(price):
price = float(price) # 確保是數字
# 生成價格範圍的數據
price_range = np.linspace(0, 50, 100)
supply_values = supply_curve(price_range)
# 計算生產者剩餘 (圖表下方的區域)
producer_surplus = 0.5 * price ** 2 # 生產者剩餘的簡單近似
# 繪製圖表
fig = go.Figure()
# 供應曲線
fig.add_trace(go.Scatter(x=price_range, y=supply_values, mode='lines', name='供應曲線'))
# 填充生產者剩餘區域
fig.add_trace(go.Scatter(
x=[0, price, price, 0],
y=[0, supply_curve(price), supply_curve(price), 0],
fill='toself',
fillcolor='rgba(0, 255, 0, 0.3)',
line=dict(color='rgba(255, 255, 255, 0)'),
name='生產者剩餘區域'
))
# 更新圖表佈局
fig.update_layout(
title="供需圖表 - 生產者剩餘",
xaxis_title="價格",
yaxis_title="供應量",
showlegend=True
)
# 返回更新的價格信息和圖表
return f"當前價格: {price} 元", fig
# 运行 Dash 应用
if __name__ == '__main__':
app.run_server(debug=True)
很抱歉,此論壇的大多數成員可能會較難回答你的問題。我們大多數人使用英語,而你的問題排版不易閱讀,且缺乏足夠的上下文來了解你究竟需要什麼樣的幫助。
也許你可以試試在專門的中文論壇上發問,或將問題翻譯成英文後再發問,這樣可能會更容易獲得回應。