import matplotlib.pyplot as plt
import numpy as np
from math import floor, ceil
import json
import argparse
def plot(report):
fig, ax = plt.subplots()
ax.plot(
[report[0]['start_map'][0], report[0]['end_map'][0]],
[report[0]['start_map'][1], report[0]['end_map'][1]],
'r'
)
ax.set_xticks(np.arange(report[0]['current_map'][0], report[-1]['current_map'][0], 1.0))
ax.set_yticks(np.arange(report[0]['current_map'][1], report[-1]['current_map'][1], -1.0))
ax.xaxis.grid(True)
ax.yaxis.grid(True)
for i, step in enumerate(report):
ax.plot(
step['current_map'][0],
step['current_map'][1],
'ob'
)
ax.annotate(
f'{i}',
(step['current_map'][0], step['current_map'][1])
)
if i > 0:
a = report[i - 1]['current_map']
else:
a = report[0]['start_map']
plt.show()
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Plots a map JSON file')
parser.add_argument('report_path', metavar='P', type=str, nargs=1, help='path to the line_step_report.json file to plot')
args = parser.parse_args()
with open(args.report_path[0], 'r') as f:
report = json.load(f)
if len(report) > 100:
report = report[0:100]
plot(report)