1
我在使用熊貓製作排名圖時出現問題,其中一些數據可能是新的,只有數據開始在我的數據日期範圍之間。熊貓分享x軸和不完整的數據
下面是一些測試數據和圖像顯示問題。首先,X標籤看起來是從最後一次繪圖調用中獲得的,其次,第一天缺少數據的數據繪製在我想要的地方的一天左右。
我該如何解決這個問題,以便「最近」這一行能夠正確地切換,並且X軸上的日期也是正確的?
import pandas as pd
import matplotlib.pyplot as plt
from io import StringIO
from matplotlib.ticker import MaxNLocator
TESTDATA=StringIO("""
2017-10-10 A 30
2017-10-10 B 40
2017-10-10 C 60
2017-10-10 D 20
2017-10-11 A 60
2017-10-11 B 20
2017-10-11 C 30
2017-10-11 D 10
2017-10-11 Recent 50
2017-10-12 A 40
2017-10-12 B 20
2017-10-12 C 17
2017-10-12 D 15
2017-10-12 Recent 45
""")
# recent
headers = ['Date','Name','Downloads']
df = pd.read_csv(TESTDATA, sep='\t', names=headers)
df["Ranking"] = df.groupby(["Date"])["Downloads"].rank(method="first", ascending=False)
print(df)
df.set_index('Date', inplace=True)
fig, ax = plt.subplots(figsize=(10, 5), sharex=True)
labels = []
for key, grp in df.groupby(['Name']):
#grp = grp[grp.Ranking <=3]
grp.plot(ax=ax, kind='line', y='Ranking', linewidth=4, sharex=True)
labels.append(key)
lines, _ = ax.get_legend_handles_labels()
ax.legend(lines, labels, loc='best')
plt.gca().invert_yaxis()
ax.xaxis
#ax.set_ylim(4.5, 0.5)
ax.yaxis.set_major_locator(MaxNLocator(integer=True))
plt.xlabel('Date')
plt.ylabel('Rank')
plt.title('Daily Download Ranks')
plt.show()