Я хочу создать график, показывающий ошибку числовой функции для различных методов / значений сходимости на одном графике.
Я использую некоторое время l oop, чтобы увеличивать различные значения условия сходимости и отображать ошибку на графике, один раз для каждого метода сходимости (помеченного суффиксом A и B).
Проблема в том, что каждый раз, когда я вызываю plot в matplotlib, строка отображается другим цветом. Я хочу, чтобы один и тот же цвет для каждого значения конвергенции (ie отображал линии одним цветом, если они имеют общее значение конвергенции), чтобы читателю было легче видеть, какие линии связаны.
Пример того, что мой код в настоящее время производит.
В то время как я хотел бы, чтобы цветная и черная пунктирная линия в каждой паре быть того же цвета. Я не включил определения функций, но код, который я использую для создания графика:
conv = 1e-0
h=0.1
while conv>1e-4:
errorlist_A, errorlist_B = [],[]
gridsize = []
grid_x = 40
while grid_x <= 100:
analytical = (np.ones((grid_x,grid_x)))*edge_val
P = np.zeros((grid_x,grid_x))
gridsize.append(grid_x)
solA = solvelap_avg_rand(grid_x,grid_x,edge_val,P,h,conv)
solB = solvelap_max_rand(grid_x,grid_x,edge_val,P,h,conv)
errorlist_A.append(errorfunc(grid_x,grid_y,analytical,solA,edge_val))
errorlist_B.append(errorfunc(grid_x,grid_y,analytical,solB,edge_val))
grid_x +=5
print(grid_x)
plt.plot(gridsize,errorlist_A, label = "{0:.1g}".format(conv))
plt.plot(gridsize,errorlist_B, label = "{0:.1g}".format(conv) , linestyle = "--", color = "k")
conv *=0.1
plt.title("Fig:6 Error per Node Vs. Grid Width")
plt.xlabel("Grid Width")
plt.ylabel("Average Error Per Node (Log10)")
plt.yscale("log")
plt.legend()
plt.show()
Примечание: я знаю, что вы можете установить цвета линий вручную в качестве аргумента , но я не уверен, как это сделать в al oop.
Кроме того, если в любом случае легенда заблокирует сюжеты, это также будет очень полезно.