Python绘制多进程存活/空闲折线图遇格式错误问题求助
解决Matplotlib绘制进程存活/空闲状态折线图的错误
嘿,你的代码报错的核心原因是用错了plt.plot()的参数顺序和用法!
你把进程名"process1"直接放在了第二个参数的位置,但Matplotlib的plt.plot()函数里,第二个参数是用来传y轴数据的,而不是进程标签或者格式字符串。而且"process1"这种字符串会被当成绘图格式代码解析,里面的字母会被误认为是标记符号(比如'p'代表点标记,'r'代表红色),这就触发了ValueError: Illegal format string "process1"; two marker symbols这个错误。
要实现你想要的「折线段代表存活时长,间隔代表空闲时长」的效果,我们需要给每个进程分配一个固定的y轴位置(比如process1在y=1的水平线上),然后分别绘制存活阶段的实线和空闲阶段的虚线。下面是修正后的完整代码:
import matplotlib.pyplot as plt # 给每个进程分配y轴位置,方便区分 process_y = {"process1": 1, "process2": 2, "process3": 3} alive_duration = 6 # 进程存活时长 sleep_duration = 2 # 进程空闲时长 # 逐个绘制每个进程的状态 for name, y_pos in process_y.items(): # 存活阶段:用实线绘制,x从0到存活时长,y固定为进程对应的位置 plt.plot([0, alive_duration], [y_pos, y_pos], color='darkblue', linewidth=3, label=name if y_pos == 1 else "") # 空闲阶段:用虚线绘制,x从存活结束到空闲结束 plt.plot([alive_duration, alive_duration + sleep_duration], [y_pos, y_pos], color='darkblue', linestyle='--', linewidth=3) # 美化图表,让可读性更强 plt.yticks(list(process_y.values()), list(process_y.keys())) # 把y轴数值替换成进程名 plt.xlabel("时间") plt.ylabel("进程") plt.title("进程存活与空闲状态展示") plt.legend() plt.xlim(0, alive_duration + sleep_duration) plt.grid(axis='x', linestyle='--', alpha=0.6) plt.show()
如果你的进程是反复存活-空闲循环的,比如要展示2个周期的状态,可以用下面的代码:
import matplotlib.pyplot as plt process_y = {"process1": 1, "process2": 2, "process3": 3} alive_dur = 6 sleep_dur = 2 cycle_count = 2 # 循环次数 for name, y_pos in process_y.items(): current_time = 0 for _ in range(cycle_count): # 绘制存活段 plt.plot([current_time, current_time + alive_dur], [y_pos, y_pos], color='darkblue', linewidth=3) # 绘制空闲段 plt.plot([current_time + alive_dur, current_time + alive_dur + sleep_dur], [y_pos, y_pos], color='darkblue', linestyle='--', linewidth=3) current_time += alive_dur + sleep_dur plt.yticks(list(process_y.values()), list(process_y.keys())) plt.xlabel("时间") plt.ylabel("进程") plt.title("多周期进程存活与空闲状态") plt.xlim(0, cycle_count * (alive_dur + sleep_dur)) plt.grid(axis='x', linestyle='--', alpha=0.6) plt.show()
这样就能清晰地展示每个进程的存活(实线)和空闲(虚线)时间段啦!
内容的提问来源于stack exchange,提问作者Zeeshan Hayat
相关产品推荐
相关产品推荐

