簡體   English   中英

使用經驗數據累積 x 軸繪制步驟 function

[英]Plotting step function with empirical data cumulative x-axis

我有一個虛擬數據集df

  Demand    WTP
0    13.0  111.3
1   443.9  152.9
2   419.6   98.2
3   295.9  625.5
4   150.2  210.4

我想將 plot 這個數據作為步驟 function,其中“WTP”是 y 值,“需求”是 x 值。

階梯曲線應從“WTP”中具有最低值的行開始,然后隨着“需求”中相應的 x 值逐漸增加。 但是,我無法讓 x 值累積,相反,我的 plot 變成了這樣:

在此處輸入圖像描述

我試圖得到看起來像這樣的東西:

在此處輸入圖像描述

  • 但我想要數據集中的實際值,而不是沿 y 軸的比例:

這是我的代碼:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

Demand_quantity = pd.Series([13, 443.9, 419.6, 295.9, 150.2])
Demand_WTP = [111.3, 152.9, 98.2, 625.5, 210.4]

demand_data = {'Demand':Demand_quantity, 'WTP':Demand_WTP}
Demand = pd.DataFrame(demand_data)
Demand.sort_values(by = 'WTP', axis = 0, inplace = True)
print(Demand)

# sns.ecdfplot(data = Demand_WTP, x = Demand_quantity, stat = 'count')

plt.step(Demand['Demand'], Demand['WTP'], label='pre (default)')

plt.legend(title='Parameter where:')
plt.title('plt.step(where=...)')
plt.show()

你可以試試:

import matplotlib.pyplot as plt
import pandas as pd

df=pd.DataFrame({"Demand":[13, 443.9, 419.6, 295.9, 150.2],"WTP":[111.3, 152.9, 98.2, 625.5, 210.4]})

df=df.sort_values(by=["Demand"])
plt.step(df.Demand,df.WTP)

但我不太確定你想做什么。 如果 x 值是df.Demand ,則 dataframe 應根據此列進行排序。

如果您想累積 x 值,請嘗試使用numpy.cumsum

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

df=pd.DataFrame({"Demand":[13, 443.9, 419.6, 295.9, 150.2],"WTP":[111.3, 152.9, 98.2, 625.5, 210.4]})

df=df.sort_values(by=["WTP"])
plt.step(np.cumsum(df.Demand),df.WTP)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM