我有几条曲线,它们的x值相同,但y值不同。下面的图片由21个不同的曲线组成。其中10条是点线,1条是实线,最后10条是虚线。
然而,从图中可以看出,在一个图中展示这么多内容有些混乱。你不能随处都看清楚每个东西。所以我希望在前10条线和后10条之间有一个阴影区域,这会让图像更易于观察。
但是我不确定如何开始?
目前我的代码如下:
import os
import numpy as np
import matplotlib.pyplot as plt
structures = ['Rectum']
patients = ["426"]
color_map = 'nipy_spectral'
color = {'PTV':0.16, 'Rectum':0.80, 'Bladder':0.96}
legends = ['PTV', 'Rectum', 'Bladder']
x = np.loadtxt('dose_gy.txt')
for plot, patient in enumerate(patients):
plot += 1
PATH_TO_YDATA = 'results/Two_Fields/DVH'
for f in sorted(os.listdir(PATH_TO_YDATA), key=lambda f: f.split('_')[-2]):
if f.split('_')[-2] == patient:
for structure in structures:
if f.split('_')[2] == structure:
y = np.loadtxt(PATH_TO_YDATA + '/' + f)
plt.axis([0, 90, 0, 50])
if int(f.split('_')[-1][:-4]) < 90:
plt.plot(x, y * 100, color=plt.get_cmap(color_map)(color[structure]), linestyle='dotted', alpha=0.8, linewidth=2.0)
elif int(f.split('_')[-1][:-4]) > 90:
plt.plot(x, y * 100, color=plt.get_cmap(color_map)(color[structure]), linestyle='dashed', alpha=0.8, linewidth=2.0)
elif int(f.split('_')[-1][:-4]) == 90:
plt.plot(x, y * 100, color=plt.get_cmap(color_map)(color[structure]), linestyle='solid', alpha=1.0, linewidth=3.0, zorder=1000)
plt.title('Patient ' + str(plot))
plt.xlabel("Dose [Gy]", fontsize=14)
plt.ylabel("Volume [%]", fontsize=14)
plt.show()