Python 如何连接符合条件的绘图上的所有远点?

Python 如何连接符合条件的绘图上的所有远点?,python,matplotlib,line,connect,Python,Matplotlib,Line,Connect,我正在根据“日期-工作日”绘制我的训练重量。我要连接符合条件的所有点: weights=([1471.524026,2399.55462,0,2758.16229,5132.] 日期=['16周四','20周一','21周二','22周三','23周四','24周五','25周六','27周一'] 任何(x在日期[i]中表示x在[“周一”、“周四”]) 我看到了这个问题,但它每两点就解决一次,但我的问题是,我可能会跳过几天。我希望代码是健壮的 我将其用于上述“日期”和“重量”: 产生了这个断开

我正在根据“日期-工作日”绘制我的训练重量。我要连接符合条件的所有点:

weights=([1471.524026,2399.55462,0,2758.16229,5132.]
日期=['16周四','20周一','21周二','22周三','23周四','24周五','25周六','27周一']
任何(x在日期[i]中表示x在[“周一”、“周四”])
我看到了这个问题,但它每两点就解决一次,但我的问题是,我可能会跳过几天。我希望代码是健壮的

我将其用于上述“日期”和“重量”:

产生了这个断开连接的图:

我想要这个输出:

所以我这样做了:

MonThudate = []
TueFridate = []
WedSatdate = []
MonThuwt = []
TueFriwt = []
WedSatwt = []
for i in range(len(dates)):
    if any(x in dates[i] for x in ["Mon","Thu"]):
        MonThudate.append(dates[i])
        MonThuwt.append(weights[i])
    if any(x in dates[i] for x in ["Tue","Fri"]):
        TueFridate.append(dates[i])
        TueFriwt.append(weights[i])
    if any(x in dates[i] for x in ["Wed","Sat"]):
        WedSatdate.append(dates[i])
        WedSatwt.append(weights[i])
#MonThuDate = ['16 Thu', '20 Mon', '23 Thu', '27 Mon']
#MonThuwt = [1471.5, 4026.0, 0.0, 5132.0]
plt.pyplot.plot(MonThudate,MonThuwt,'ro-')
plt.pyplot.plot(WedSatdate,WedSatwt,'ro-')
plt.pyplot.plot(TueFridate,TueFriwt,'ro-')
它产生了:


但在这里,整个图形的x轴不同。它是不相交的。

所以基本上你只想连接一周中的某些日子。然后,您需要使用正确的组标签标记这些日期,并在每个组上绘图:

# create day group:
day_groups = [['Thu','Mon'], ['Tue','Fri'], ['Wed', 'Sat'],['Sun']]
day_dict = {day:i for i,groups in enumerate(day_groups) for day in groups}
# {'Thu': 0, 'Mon': 0, 'Tue': 1, 'Fri': 1, 'Wed': 2, 'Sat': 2, 'Sun': 3}

# label the days in the given data set:
# if df.dates is datetime, we can do df.dates.dt.day_name().str[:3]
day_labels = df.dates.str.split(expand=True)[1].map(day_dict)

# groupby and plot:

fig, ax = plt.subplots(figsize=(10,6))
df.weights.groupby(day_labels).plot(ax=ax, marker='o')

ax.set_xticklabels([0] + df.dates.tolist())
ax.grid(b=True, which='major', color='#666666', linestyle='-')
plt.show()
输出:


注意:建议您将
df.dates
转换为
datetime
,以便自动排列x轴。

我不确定是否理解您的问题。首先,请提供模型数据。具体请参阅。此外,您可能希望(使用绘画或任何您能找到的软件)绘制您试图获得的结果。您在两个绘图中的数据似乎有所不同。@DizietAsahi请立即检查!谢谢你的邀请reference@QuangHoang不,x轴是不同的。我现在删除了多余的代码。
# create day group:
day_groups = [['Thu','Mon'], ['Tue','Fri'], ['Wed', 'Sat'],['Sun']]
day_dict = {day:i for i,groups in enumerate(day_groups) for day in groups}
# {'Thu': 0, 'Mon': 0, 'Tue': 1, 'Fri': 1, 'Wed': 2, 'Sat': 2, 'Sun': 3}

# label the days in the given data set:
# if df.dates is datetime, we can do df.dates.dt.day_name().str[:3]
day_labels = df.dates.str.split(expand=True)[1].map(day_dict)

# groupby and plot:

fig, ax = plt.subplots(figsize=(10,6))
df.weights.groupby(day_labels).plot(ax=ax, marker='o')

ax.set_xticklabels([0] + df.dates.tolist())
ax.grid(b=True, which='major', color='#666666', linestyle='-')
plt.show()