Files
boundary-aware-centrality/correction_visualization.py
Yves Biener 7581966c88 WIP different small python scripts to generate corresponding images
The final API will be derived from these scripts into a different
repository, which then only holds the corresponding functions that
provide the corresponding functionalities described in the associated
master thesis.
2026-03-28 15:04:38 +01:00

41 lines
1.3 KiB
Python

import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection
import numpy as np
b = 0.7
c0 = 0.2
m = 0.85
d_curve = np.linspace(0.3, 0.9, 500)
C_curve = np.piecewise(
d_curve,
[d_curve <= b, d_curve > b],
[lambda x: m * x + c0, lambda x: m * b + c0]
)
fig, ax = plt.subplots(figsize=(15, 12))
ax.set_xlabel('Distance to Bounding-Box')
ax.set_ylabel('Centrality Value')
ex = [0.5, 0.7, 0.5, 0.5]
ey = [m*b + c0, m*b + c0, m*0.5 + c0, m*b + c0]
ch = LineCollection([np.column_stack([ex, ey])], colors=['r'], linewidths=0.5)
ax.add_collection(ch)
ax.annotate("$𝛿$", xy=(0.48, 0.71), xytext=(0.48, 0.71), fontsize=18)
ax.scatter([0.5, 0.8, 0.85], [0.5, 0.75, 0.9], color='w', s=1)
ax.plot(d_curve, C_curve, color='k', linewidth=0.8)
ax.annotate("$x$", xy=(0.5, m*0.5 + c0 - 0.01), xytext=(0.5, m*0.5 + c0 - 0.01), fontsize=10)
ax.annotate("$b$", xy=(b, m*b + c0 + 0.005), xytext=(b, m*b + c0 + 0.005), fontsize=10)
# ax.annotate("$f(x) = m*x + c_0$", xy=(0.32, 0.58), xytext=(0.32, 0.58), fontsize=10)
# ax.annotate("$g(x) = m*b + c_0$", xy=(0.75, 0.8), xytext=(0.75, 0.8), fontsize=10)
ax.axis('off')
# ax.get_xaxis().set_visible(False)
# ax.get_yaxis().set_visible(False)
ax.set_aspect('equal')
fig.savefig("model_correction_visualization.svg", format='svg', bbox_inches='tight', pad_inches=0)