refactor figures
This commit is contained in:
parent
762163877b
commit
496e147c2a
@ -1,5 +1,6 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
|
import time
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
from matplotlib.patches import Ellipse
|
from matplotlib.patches import Ellipse
|
||||||
@ -13,19 +14,20 @@ def print_results(dic_stats, show=False, save=False):
|
|||||||
Position error in meters due to a height variation of 7 cm (Standard deviation already knowing the sex)
|
Position error in meters due to a height variation of 7 cm (Standard deviation already knowing the sex)
|
||||||
Position error not knowing the gender (13cm as average difference --> 7.5cm of error to add)
|
Position error not knowing the gender (13cm as average difference --> 7.5cm of error to add)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# ALE figure
|
||||||
dir_out = 'docs'
|
dir_out = 'docs'
|
||||||
phase = 'test'
|
phase = 'test'
|
||||||
x_min = 0
|
x_min = 0
|
||||||
x_max = 38
|
x_max = 38
|
||||||
xx = np.linspace(0, 60, 100)
|
xx = np.linspace(0, 60, 100)
|
||||||
mm_std = 0.04
|
|
||||||
mm_gender = 0.0556
|
mm_gender = 0.0556
|
||||||
excl_clusters = ['all', '50', '>50', 'easy', 'moderate', 'hard']
|
excl_clusters = ['all', '50', '>50', 'easy', 'moderate', 'hard']
|
||||||
clusters = tuple([clst for clst in dic_stats[phase]['our'] if clst not in excl_clusters])
|
clusters = tuple([clst for clst in dic_stats[phase]['our'] if clst not in excl_clusters])
|
||||||
yy_gender = target_error(xx, mm_gender)
|
yy_gender = target_error(xx, mm_gender)
|
||||||
yy_gps = np.linspace(5., 5., xx.shape[0])
|
yy_gps = np.linspace(5., 5., xx.shape[0])
|
||||||
|
|
||||||
# Precision on same instances
|
plt.figure(0)
|
||||||
fig_name = 'results.png'
|
fig_name = 'results.png'
|
||||||
plt.xlabel("Distance [meters]")
|
plt.xlabel("Distance [meters]")
|
||||||
plt.ylabel("Average localization error [m]")
|
plt.ylabel("Average localization error [m]")
|
||||||
@ -39,8 +41,7 @@ def print_results(dic_stats, show=False, save=False):
|
|||||||
|
|
||||||
plt.plot(xx, yy_gps, '-', label="GPS Error", color='y')
|
plt.plot(xx, yy_gps, '-', label="GPS Error", color='y')
|
||||||
for idx, method in enumerate(['m3d_merged', 'geom_merged', 'md_merged', 'our_merged', '3dop_merged']):
|
for idx, method in enumerate(['m3d_merged', 'geom_merged', 'md_merged', 'our_merged', '3dop_merged']):
|
||||||
dic_errs = dic_stats[phase][method]['mean']
|
errs = [dic_stats[phase][method][clst]['mean'] for clst in clusters]
|
||||||
errs = get_values(dic_errs, clusters)
|
|
||||||
xxs = get_distances(clusters)
|
xxs = get_distances(clusters)
|
||||||
|
|
||||||
plt.plot(xxs, errs, marker=mks[idx], markersize=mksizes[idx], linewidth=lws[idx], label=labels[idx],
|
plt.plot(xxs, errs, marker=mks[idx], markersize=mksizes[idx], linewidth=lws[idx], label=labels[idx],
|
||||||
@ -53,29 +54,19 @@ def print_results(dic_stats, show=False, save=False):
|
|||||||
plt.savefig(os.path.join(dir_out, fig_name))
|
plt.savefig(os.path.join(dir_out, fig_name))
|
||||||
plt.close()
|
plt.close()
|
||||||
|
|
||||||
# FIGURE SPREAD
|
# SPREAD b Figure
|
||||||
fig_name = 'spread.png'
|
plt.figure(1)
|
||||||
# fig = plt.figure(3)
|
|
||||||
# ax = fig.add_subplot(1, 1, 1)
|
|
||||||
fig, ax = plt.subplots(2, sharex=True)
|
fig, ax = plt.subplots(2, sharex=True)
|
||||||
plt.xlabel("Distance [m]")
|
plt.xlabel("Distance [m]")
|
||||||
plt.ylabel("Aleatoric uncertainty [m]")
|
plt.ylabel("Aleatoric uncertainty [m]")
|
||||||
ar = 0.5 # Change aspect ratio of ellipses
|
ar = 0.5 # Change aspect ratio of ellipses
|
||||||
scale = 1.5 # Factor to scale ellipses
|
scale = 1.5 # Factor to scale ellipses
|
||||||
rec_c = 0 # Center of the rectangle
|
rec_c = 0 # Center of the rectangle
|
||||||
# rec_h = 2.8 # Height of the rectangle
|
|
||||||
plots_line = True
|
plots_line = True
|
||||||
# ax[0].set_ylim([-3, 3])
|
|
||||||
# ax[1].set_ylim([0, 3])
|
|
||||||
# ax[1].set_ylabel("Aleatoric uncertainty [m]")
|
|
||||||
# ax[0].set_ylabel("Confidence intervals")
|
|
||||||
|
|
||||||
dic_ale = dic_stats[phase]['our']['std_ale']
|
bbs = np.array([dic_stats[phase]['our'][key]['std_ale'] for key in clusters])
|
||||||
bbs = np.array(get_values(dic_ale, clusters))
|
|
||||||
xxs = get_distances(clusters)
|
xxs = get_distances(clusters)
|
||||||
yys = target_error(np.array(xxs), mm_gender)
|
yys = target_error(np.array(xxs), mm_gender)
|
||||||
# ale_het = tuple(bbs - yys)
|
|
||||||
# plt.plot(xxs, ale_het, marker='s', label=method)
|
|
||||||
ax[1].plot(xxs, bbs, marker='s', color='b', label="Spread b")
|
ax[1].plot(xxs, bbs, marker='s', color='b', label="Spread b")
|
||||||
ax[1].plot(xxs, yys, '--', color='lightgreen', label="Task error", linewidth=2.5)
|
ax[1].plot(xxs, yys, '--', color='lightgreen', label="Task error", linewidth=2.5)
|
||||||
yys_up = [rec_c + ar/2 * scale * yy for yy in yys]
|
yys_up = [rec_c + ar/2 * scale * yy for yy in yys]
|
||||||
@ -94,7 +85,6 @@ def print_results(dic_stats, show=False, save=False):
|
|||||||
bi = Ellipse((xx, rec_c), width=bbs[idx]*ar*scale, height=scale, angle=90, color='b',linewidth=1.8,
|
bi = Ellipse((xx, rec_c), width=bbs[idx]*ar*scale, height=scale, angle=90, color='b',linewidth=1.8,
|
||||||
fill=False)
|
fill=False)
|
||||||
|
|
||||||
# ax[0].add_patch(rectangle)
|
|
||||||
ax[0].add_patch(te)
|
ax[0].add_patch(te)
|
||||||
ax[0].add_patch(bi)
|
ax[0].add_patch(bi)
|
||||||
|
|
||||||
@ -107,10 +97,12 @@ def print_results(dic_stats, show=False, save=False):
|
|||||||
|
|
||||||
|
|
||||||
def target_error(xx, mm):
|
def target_error(xx, mm):
|
||||||
|
"""Multiplication"""
|
||||||
return mm * xx
|
return mm * xx
|
||||||
|
|
||||||
|
|
||||||
def get_distances(clusters):
|
def get_distances(clusters):
|
||||||
|
"""Extract distances as intermediate values between 2 clusters"""
|
||||||
|
|
||||||
clusters_ext = list(clusters)
|
clusters_ext = list(clusters)
|
||||||
clusters_ext.insert(0, str(0))
|
clusters_ext.insert(0, str(0))
|
||||||
@ -122,14 +114,6 @@ def get_distances(clusters):
|
|||||||
return tuple(distances)
|
return tuple(distances)
|
||||||
|
|
||||||
|
|
||||||
def get_values(dic_err, clusters):
|
|
||||||
|
|
||||||
errs = []
|
|
||||||
for key in clusters:
|
|
||||||
errs.append(dic_err[key])
|
|
||||||
return errs
|
|
||||||
|
|
||||||
|
|
||||||
def get_confidence_points(confidences, distances, errors):
|
def get_confidence_points(confidences, distances, errors):
|
||||||
|
|
||||||
confidence_points = []
|
confidence_points = []
|
||||||
@ -142,4 +126,4 @@ def get_confidence_points(confidences, distances, errors):
|
|||||||
distance_points.append(dd)
|
distance_points.append(dd)
|
||||||
distance_points.append(dd)
|
distance_points.append(dd)
|
||||||
|
|
||||||
return distance_points, confidence_points
|
return distance_points, confidence_points
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user