我有一个列表,其中包含两个不同的数据,用于绘制两条线,另一个列表包含这些相应线上的标记。但是标记列表的列表可以有空集。我写了一段代码,但没有显示任何图像。任何人都可以告诉我为什么以下几行不起作用?
import numpy as np
import matplotlib.pyplot as plt
def Draw(Narratives, Prob_failure):
x=list(range(0,len(Narratives[0])))
for i in range(len(Narratives)):
plt.figure(figsize=(12,8))
if not Prob_failure[i]:
plt.plot(x,Narratives[i])
else:
Int_Prob_failures = [int(x) for x in Prob_failure[i] ]
markers_on = Int_Prob_failures
plt.plot(x,Narratives[i],'-gD', markevery=markers_on)
plt.xlim(0,len(Narratives[0]))
plt.ylim(0.0, 2000.0)
plt.grid(True)
plt.xlabel('Length of the Data Narrative', fontsize=15)
plt.ylabel('Intervals', fontsize=15)
plt.title('Plotting Data Narratives', weight='bold')
plt.legend()
plt.show()
Data = [[40.495959999999997, 68.728006916094003, 80.991919999999993, 121.48787999999999, 161.98383999999999, 200.75514611468412, 202.47979999999998, 208.8702579527606, 242.97575999999998, 426.66599412223769, 598.13431735234519, 947.40769717700846], [40.495959999999997, 80.991919999999993, 121.48787999999999, 161.98383999999999, 202.47979999999998, 209.4165446035731, 242.97575999999998, 383.51736697098818, 451.56755438353258, 503.98594436505164, 516.26217431475163, 1099.3652534435903]]
Failures = [[68.728006916094003], []]
Draw(Data,Failures)
答案 0 :(得分:1)
而不是:
Int_Prob_failures = [int(x) for x in Prob_failure[i] ]
markers_on = Int_Prob_failures
plt.plot(x,Narratives[i],'-gD', markevery=markers_on)
你可以试试:
index = []
for j in range(len(Prob_failure[i])):
for k in range(len(Narratives[i])):
if Prob_failure[i][j] == Narratives[i][k]:
index.append(k)
plt.plot(x,Narratives[i],'-gD', markevery = index )
markevery选项采用您想要强调的点的索引。