Plot dashed line interrupted with data (similar to contour plot) Plot dashed line interrupted with data (similar to contour plot) python python

Plot dashed line interrupted with data (similar to contour plot)


Quick and dirty answer using annotate:

import matplotlib.pyplot as pltimport numpy as npx = list(reversed([1.81,1.715,1.78,1.613,1.629,1.714,1.62,1.738,1.495,1.669,1.57,1.877,1.385]))y = [0.924,0.915,0.914,0.91,0.909,0.905,0.905,0.893,0.886,0.881,0.873,0.873,0.844]def plot_with_text(x, y, text, text_count=None):    text_count = (2 * (len(x) / len(text))) if text_count is None else text_count    fig, ax = plt.subplots(1,1)    l, = ax.plot(x,y)    text_size = len(text) * 10    idx_step = len(x) / text_count    for idx_num in range(text_count):        idx = int(idx_num * idx_step)        text_pos = [x[idx], y[idx]]        xscreen = ax.transData.transform(zip(x[max(0, idx-1):min(len(x), idx+2)], y[max(0, idx-1):min(len(y), idx+2)]))        a = np.abs(np.gradient(xscreen)[0][0])        rot = np.rad2deg(np.arctan2(*a)) - 90        ax.annotate(text, xy=text_pos, color="r", bbox=dict(ec="1", fc="1", alpha=0.9), rotation=rot, ha="center", va="center")plot_with_text(x, y, "test")

Yields:

plot

You can play with the offsets for more pleasing results.