我試圖在python中重現增長圖表。基礎數據以天爲單位使用年齡,但我希望以2個月的間隔顯示年齡(x)軸。這可以完全用軸/標籤選項來完成,還是需要將計算列添加到數據中?在pyplot軸上顯示計算值而不更改比例
這是爲了自學,所以解釋比代碼更受歡迎。
這是我有:
# Import the WHO weight-for-age data from Excel
import pandas
import matplotlib.pyplot as plt
import numpy as np
WHO_WFA = pandas.read_excel("PercentilesData.xlsx", sheetname="WGT_WHO")
# ... slice the dataframe and plot it
# steps omitted for brevity
# Plot with data:
plt.plot(maleAge, maleP01, maleAge, maleP1, maleAge, maleP3, maleAge, maleP5, maleAge, maleP10, maleAge, maleP15, maleAge, maleP25, maleAge, maleP50, maleAge, maleP75, maleAge, maleP85, maleAge, maleP90, maleAge, maleP95, maleAge, maleP97, maleAge, maleP99, maleAge, maleP999)
# Set up the axes/labels
plt.title('Weight-for-Age: male (WHO)')
plt.xlabel('Age (days)')
plt.ylabel('Weight (kg)')
plt.axis([0,1900,0,30])
plt.grid(True)
plt.show()
相反,x軸應具有在2個月的增量(2,4,6,8,10,12蜱..至60)。儘管如此,我仍然需要繪製數據。所以60的x軸值應該顯示爲2,120(天)顯示爲4(月)等。
謝謝任何幫助!
UPDATE 1: 由月持續時間除以值確實導致相同的曲線,只要x軸範圍調整:
# month duration
mo = 30.4375
# divide age in days by month duration
plt.plot(maleAge/mo, maleP01, maleAge/mo, maleP1, maleAge/mo, maleP3, maleAge/mo, maleP5, maleAge/mo, maleP10, maleAge/mo, maleP15, maleAge/mo, maleP25, maleAge/mo, maleP50, maleAge/mo, maleP75, maleAge/mo, maleP85, maleAge/mo, maleP90, maleAge/mo, maleP95, maleAge/mo, maleP97, maleAge/mo, maleP99, maleAge/mo, maleP999)
# Adjust the maximum x value to 60 ...
plt.axis([0,60,0,30])
這產生:
最後一步是如何使用每12個月的主要刻度和每2個月的次要刻度顯示軸。
對於真正好奇: 世界衛生組織增長圖表中的月份長度標準化爲30.4375天。數據從0到1856天(60.98個月完成)。對於每一天(0,1,... 1856),有15個權重值,每個對應不同的百分位數曲線,總共有27,840個值。
原始數據是公開的:WHO data/weight-for-age for boys
什麼是輸入數據到這一點?由於月份一般在28到31天之間,因此目前還不清楚產出應該如何。 – ImportanceOfBeingErnest
對於增長圖,一個月被認爲是30.4375天。數據範圍從0到1856天(60.98個月完成)。就問題而言,計算中使用的值並不重要。 – pediatrictactic
因此,繪製年齡除以30.4375會出現什麼問題? 'plt.plot(maleAge/30.4375,maleP01,maleAge/30.4375,maleP1,...)' – ImportanceOfBeingErnest