Spaces:
Running
on
Zero
Running
on
Zero
# ---------------------------------------------------------------------------- | |
# - TanksAndTemples Website Toolbox - | |
# - http://www.tanksandtemples.org - | |
# ---------------------------------------------------------------------------- | |
# The MIT License (MIT) | |
# | |
# Copyright (c) 2017 | |
# Arno Knapitsch <arno.knapitsch@gmail.com > | |
# Jaesik Park <syncle@gmail.com> | |
# Qian-Yi Zhou <Qianyi.Zhou@gmail.com> | |
# Vladlen Koltun <vkoltun@gmail.com> | |
# | |
# Permission is hereby granted, free of charge, to any person obtaining a copy | |
# of this software and associated documentation files (the "Software"), to deal | |
# in the Software without restriction, including without limitation the rights | |
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
# copies of the Software, and to permit persons to whom the Software is | |
# furnished to do so, subject to the following conditions: | |
# | |
# The above copyright notice and this permission notice shall be included in | |
# all copies or substantial portions of the Software. | |
# | |
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
# THE SOFTWARE. | |
# ---------------------------------------------------------------------------- | |
# | |
# This python script is for downloading dataset from www.tanksandtemples.org | |
# The dataset has a different license, please refer to | |
# https://tanksandtemples.org/license/ | |
import matplotlib.pyplot as plt | |
from cycler import cycler | |
def plot_graph( | |
scene, | |
fscore, | |
dist_threshold, | |
edges_source, | |
cum_source, | |
edges_target, | |
cum_target, | |
plot_stretch, | |
mvs_outpath, | |
show_figure=False, | |
): | |
f = plt.figure() | |
plt_size = [14, 7] | |
pfontsize = "medium" | |
ax = plt.subplot(111) | |
label_str = "precision" | |
ax.plot( | |
edges_source[1::], | |
cum_source * 100, | |
c="red", | |
label=label_str, | |
linewidth=2.0, | |
) | |
label_str = "recall" | |
ax.plot( | |
edges_target[1::], | |
cum_target * 100, | |
c="blue", | |
label=label_str, | |
linewidth=2.0, | |
) | |
ax.grid(True) | |
plt.rcParams["figure.figsize"] = plt_size | |
plt.rc("axes", prop_cycle=cycler("color", ["r", "g", "b", "y"])) | |
plt.title("Precision and Recall: " + scene + ", " + "%02.2f f-score" % | |
(fscore * 100)) | |
plt.axvline(x=dist_threshold, c="black", ls="dashed", linewidth=2.0) | |
plt.ylabel("# of points (%)", fontsize=15) | |
plt.xlabel("Meters", fontsize=15) | |
plt.axis([0, dist_threshold * plot_stretch, 0, 100]) | |
ax.legend(shadow=True, fancybox=True, fontsize=pfontsize) | |
# plt.axis([0, dist_threshold*plot_stretch, 0, 100]) | |
plt.setp(ax.get_legend().get_texts(), fontsize=pfontsize) | |
plt.legend(loc=2, borderaxespad=0.0, fontsize=pfontsize) | |
plt.legend(loc=4) | |
leg = plt.legend(loc="lower right") | |
box = ax.get_position() | |
ax.set_position([box.x0, box.y0, box.width * 0.8, box.height]) | |
# Put a legend to the right of the current axis | |
ax.legend(loc="center left", bbox_to_anchor=(1, 0.5)) | |
plt.setp(ax.get_legend().get_texts(), fontsize=pfontsize) | |
png_name = mvs_outpath + "/PR_{0}_@d_th_0_{1}.png".format( | |
scene, "%04d" % (dist_threshold * 10000)) | |
pdf_name = mvs_outpath + "/PR_{0}_@d_th_0_{1}.pdf".format( | |
scene, "%04d" % (dist_threshold * 10000)) | |
# save figure and display | |
f.savefig(png_name, format="png", bbox_inches="tight") | |
f.savefig(pdf_name, format="pdf", bbox_inches="tight") | |
if show_figure: | |
plt.show() | |