updated legends for different graphs
This commit is contained in:
parent
90ae11ebc4
commit
3724009060
1 changed files with 109 additions and 76 deletions
|
|
@ -82,8 +82,40 @@ def exposure_model_from_vl_talking(viral_loads):
|
|||
upper_percentiles.append(np.quantile(emission_rate, 0.99))
|
||||
|
||||
# divide by 4 to have in 15min (quarter of an hour)
|
||||
build_plot(viral_loads, er_means,
|
||||
lower_percentiles, upper_percentiles, coleman_etal_vl_talking, [x/4 for x in coleman_etal_er_talking])
|
||||
coleman_etal_er_talking_2 = [x/4 for x in coleman_etal_er_talking]
|
||||
|
||||
ax.plot(viral_loads, er_means)
|
||||
ax.fill_between(viral_loads, lower_percentiles,
|
||||
upper_percentiles, alpha=0.2)
|
||||
ax.set_yscale('log')
|
||||
|
||||
############# Coleman #############
|
||||
plt.scatter(coleman_etal_vl_talking, coleman_etal_er_talking_2, marker='x')
|
||||
x_hull, y_hull = get_enclosure_points(
|
||||
coleman_etal_vl_talking, coleman_etal_er_talking_2)
|
||||
# plot shape
|
||||
plt.fill(x_hull, y_hull, '--', c='orange', alpha=0.2)
|
||||
|
||||
############# Markers #############
|
||||
markers = [5, 'd', 4]
|
||||
|
||||
############ Legend ############
|
||||
result_from_model = mlines.Line2D(
|
||||
[], [], color='blue', marker='_', linestyle='None')
|
||||
coleman = mlines.Line2D([], [], color='orange',
|
||||
marker='x', linestyle='None')
|
||||
|
||||
title_proxy = Rectangle((0, 0), 0, 0, color='w')
|
||||
titles = ["$\\bf{CARA \, \\it{(SARS-CoV-2)}:}$", "$\\bf{Coleman \, et \, al. \, \\it{(SARS-CoV-2)}:}$"]
|
||||
leg = plt.legend([title_proxy, result_from_model, title_proxy, coleman],
|
||||
[titles[0], "Result from model", titles[1], "Dataset"])
|
||||
|
||||
# Move titles to the left
|
||||
for item, label in zip(leg.legendHandles, leg.texts):
|
||||
if label._text in titles:
|
||||
width = item.get_window_extent(fig.canvas.get_renderer()).width
|
||||
label.set_ha('left')
|
||||
label.set_position((-3*width, 0))
|
||||
|
||||
############ Plot ############
|
||||
plt.title('Exhaled virions while talking for 15min',
|
||||
|
|
@ -129,15 +161,87 @@ def exposure_model_from_vl_breathing(viral_loads):
|
|||
)
|
||||
exposure_model = exposure_mc.build_model(size=SAMPLE_SIZE)
|
||||
# divide by 2 to have in 30min (half an hour)
|
||||
emission_rate = exposure_model.concentration_model.infected.emission_rate_when_present() /2
|
||||
emission_rate = exposure_model.concentration_model.infected.emission_rate_when_present() / 2
|
||||
er_means.append(np.mean(emission_rate))
|
||||
er_medians.append(np.median(emission_rate))
|
||||
lower_percentiles.append(np.quantile(emission_rate, 0.01))
|
||||
upper_percentiles.append(np.quantile(emission_rate, 0.99))
|
||||
|
||||
# divide by 2 to have in 30min (half an hour)
|
||||
build_plot(viral_loads, er_means,
|
||||
lower_percentiles, upper_percentiles, coleman_etal_vl_breathing, [x/2 for x in coleman_etal_er_breathing], milton_vl, [x/2 for x in milton_er], yann_vl, [x/2 for x in yann_er])
|
||||
coleman_etal_er_breathing_2 = [x/2 for x in coleman_etal_er_breathing]
|
||||
milton_er_2 = [x/2 for x in milton_er]
|
||||
yann_er_2 = [x/2 for x in yann_er]
|
||||
|
||||
ax.plot(viral_loads, er_means)
|
||||
ax.fill_between(viral_loads, lower_percentiles,
|
||||
upper_percentiles, alpha=0.2)
|
||||
ax.set_yscale('log')
|
||||
|
||||
############# Coleman #############
|
||||
plt.scatter(coleman_etal_vl_breathing,
|
||||
coleman_etal_er_breathing_2, marker='x')
|
||||
x_hull, y_hull = get_enclosure_points(
|
||||
coleman_etal_vl_breathing, coleman_etal_er_breathing_2)
|
||||
# plot shape
|
||||
plt.fill(x_hull, y_hull, '--', c='orange', alpha=0.2)
|
||||
|
||||
############# Markers #############
|
||||
markers = [5, 'd', 4]
|
||||
|
||||
############# Milton et al #############
|
||||
try:
|
||||
for index, m in enumerate(markers):
|
||||
plt.scatter(milton_vl[index], milton_er_2[index],
|
||||
marker=m, color='red')
|
||||
x_hull, y_hull = get_enclosure_points(milton_vl, milton_er_2)
|
||||
# plot shape
|
||||
plt.fill(x_hull, y_hull, '--', c='red', alpha=0.2)
|
||||
except:
|
||||
print("No data for Milton et al")
|
||||
|
||||
############# Yan et al #############
|
||||
try:
|
||||
plt.scatter(yann_vl[0], yann_er_2[0], marker=markers[0], color='green')
|
||||
plt.scatter(yann_vl[1], yann_er_2[1],
|
||||
marker=markers[1], color='green', s=50)
|
||||
plt.scatter(yann_vl[2], yann_er_2[2], marker=markers[2], color='green')
|
||||
|
||||
x_hull, y_hull = get_enclosure_points(yann_vl, yann_er_2)
|
||||
# plot shape
|
||||
plt.fill(x_hull, y_hull, '--', c='green', alpha=0.2)
|
||||
except:
|
||||
print("No data for Yan et al")
|
||||
|
||||
############ Legend ############
|
||||
result_from_model = mlines.Line2D(
|
||||
[], [], color='blue', marker='_', linestyle='None')
|
||||
coleman = mlines.Line2D([], [], color='orange',
|
||||
marker='x', linestyle='None')
|
||||
milton_mean = mlines.Line2D(
|
||||
[], [], color='red', marker='d', linestyle='None') # mean
|
||||
milton_25 = mlines.Line2D(
|
||||
[], [], color='red', marker=5, linestyle='None') # 25
|
||||
milton_75 = mlines.Line2D(
|
||||
[], [], color='red', marker=4, linestyle='None') # 75
|
||||
yann_mean = mlines.Line2D([], [], color='green',
|
||||
marker='d', linestyle='None') # mean
|
||||
yann_25 = mlines.Line2D([], [], color='green',
|
||||
marker=5, linestyle='None') # 25
|
||||
yann_75 = mlines.Line2D([], [], color='green',
|
||||
marker=4, linestyle='None') # 75
|
||||
|
||||
title_proxy = Rectangle((0, 0), 0, 0, color='w')
|
||||
titles = ["$\\bf{CARA \, \\it{(SARS-CoV-2)}:}$", "$\\bf{Coleman \, et \, al. \, \\it{(SARS-CoV-2)}:}$",
|
||||
"$\\bf{Milton \, et \, al. \,\\it{(Influenza)}:}$", "$\\bf{Yann \, et \, al. \,\\it{(Influenza)}:}$"]
|
||||
leg = plt.legend([title_proxy, result_from_model, title_proxy, coleman, title_proxy, milton_mean, milton_25, milton_75, title_proxy, yann_mean, yann_25, yann_75],
|
||||
[titles[0], "Result from model", titles[1], "Dataset", titles[2], "Mean", "25th per.", "75th per.", titles[3], "Mean", "25th per.", "75th per."])
|
||||
|
||||
# Move titles to the left
|
||||
for item, label in zip(leg.legendHandles, leg.texts):
|
||||
if label._text in titles:
|
||||
width = item.get_window_extent(fig.canvas.get_renderer()).width
|
||||
label.set_ha('left')
|
||||
label.set_position((-3*width, 0))
|
||||
|
||||
############ Plot ############
|
||||
plt.title('Exhaled virions while breathing for 30 min',
|
||||
|
|
@ -169,77 +273,6 @@ def get_enclosure_points(x_coordinates, y_coordinates):
|
|||
return x_hull, y_hull
|
||||
|
||||
|
||||
def build_legend(fig):
|
||||
result_from_model = mlines.Line2D(
|
||||
[], [], color='blue', marker='_', linestyle='None')
|
||||
coleman = mlines.Line2D([], [], color='orange',
|
||||
marker='x', linestyle='None')
|
||||
milton_mean = mlines.Line2D(
|
||||
[], [], color='red', marker='d', linestyle='None') # mean
|
||||
milton_25 = mlines.Line2D(
|
||||
[], [], color='red', marker=5, linestyle='None') # 25
|
||||
milton_75 = mlines.Line2D(
|
||||
[], [], color='red', marker=4, linestyle='None') # 75
|
||||
yann_mean = mlines.Line2D([], [], color='green',
|
||||
marker='d', linestyle='None') # mean
|
||||
yann_25 = mlines.Line2D([], [], color='green',
|
||||
marker=5, linestyle='None') # 25
|
||||
yann_75 = mlines.Line2D([], [], color='green',
|
||||
marker=4, linestyle='None') # 75
|
||||
|
||||
title_proxy = Rectangle((0, 0), 0, 0, color='w')
|
||||
titles = ["$\\bf{CARA \, \\it{(SARS-CoV-2)}:}$", "$\\bf{Coleman \, et \, al. \, \\it{(SARS-CoV-2)}:}$",
|
||||
"$\\bf{Milton \, et \, al. \,\\it{(Influenza)}:}$", "$\\bf{Yann \, et \, al. \,\\it{(Influenza)}:}$"]
|
||||
leg = plt.legend([title_proxy, result_from_model, title_proxy, coleman, title_proxy, milton_mean, milton_25, milton_75, title_proxy, yann_mean, yann_25, yann_75],
|
||||
[titles[0], "Result from model", titles[1], "Dataset", titles[2], "Mean", "25th per.", "75th per.", titles[3], "Mean", "25th per.", "75th per."])
|
||||
|
||||
# Move titles to the left
|
||||
for item, label in zip(leg.legendHandles, leg.texts):
|
||||
if label._text in titles:
|
||||
width = item.get_window_extent(fig.canvas.get_renderer()).width
|
||||
label.set_ha('left')
|
||||
label.set_position((-3*width, 0))
|
||||
|
||||
|
||||
def build_plot(viral_loads, er_means, lower_percentiles, upper_percentiles, coleman_etal_vl, coleman_etal_er, milton_vl, milton_er, yann_vl, yann_er, ):
|
||||
ax.plot(viral_loads, er_means)
|
||||
ax.fill_between(viral_loads, lower_percentiles,
|
||||
upper_percentiles, alpha=0.2)
|
||||
ax.set_yscale('log')
|
||||
|
||||
############# Coleman #############
|
||||
plt.scatter(coleman_etal_vl, coleman_etal_er, marker='x')
|
||||
x_hull, y_hull = get_enclosure_points(
|
||||
coleman_etal_vl, coleman_etal_er)
|
||||
# plot shape
|
||||
plt.fill(x_hull, y_hull, '--', c='orange', alpha=0.2)
|
||||
|
||||
############# Markers #############
|
||||
markers = [5, 'd', 4]
|
||||
|
||||
############# Milton et al #############
|
||||
for index, m in enumerate(markers):
|
||||
plt.scatter(milton_vl[index], milton_er[index],
|
||||
marker=m, color='red')
|
||||
x_hull, y_hull = get_enclosure_points(milton_vl, milton_er)
|
||||
# plot shape
|
||||
plt.fill(x_hull, y_hull, '--', c='red', alpha=0.2)
|
||||
|
||||
############# Yan et al #############
|
||||
plt.scatter(yann_vl[0], yann_er[0], marker=markers[0], color='green')
|
||||
plt.scatter(yann_vl[1], yann_er[1], marker=markers[1], color='green', s=50)
|
||||
plt.scatter(yann_vl[2], yann_er[2], marker=markers[2], color='green')
|
||||
|
||||
x_hull, y_hull = get_enclosure_points(yann_vl, yann_er)
|
||||
# plot shape
|
||||
plt.fill(x_hull, y_hull, '--', c='green', alpha=0.2)
|
||||
|
||||
############ Legend ############
|
||||
build_legend(fig)
|
||||
|
||||
return plt
|
||||
|
||||
|
||||
# # Milton
|
||||
# boxes = [
|
||||
# {
|
||||
|
|
|
|||
Loading…
Reference in a new issue