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


i stuck (hopefully) simple problem. aim plot dashed line interrupted data (not text).

example of how imagine possible result

as found out create dashed line via linestyle = 'dashed', appreciated put data between dashes.

something similar, regarding labeling, existing matplotlib - saw in the contour line demo.

matplotlib contour demo

update:

the question link mentioned richard in comments helpful, not 100% mentioned via comment. currently, way:

line_string2 = '-10 ' + u"\u00b0" +"c" l, = ax1.plot(t_m10_x_values,t_m10_y_values) pos = [(t_m10_x_values[-2]+t_m10_x_values[-1])/2., (t_m10_y_values[-2]+t_m10_y_values[-1])/2.] # transform data points screen space xscreen = ax1.transdata.transform(zip(t_m10_y_values[-2::],t_m10_y_values[-2::])) rot = np.rad2deg(np.arctan2(*np.abs(np.gradient(xscreen)[0][0][::-1]))) ltex = plt.text(pos[0], pos[1], line_string2, size=9, rotation=rot, color='b',ha="center", va="bottom",bbox = dict(ec='1',fc='1', alpha=0.5)) 

here can see snapshot of result. minus 20°c without bbox.

enter image description here

quick , dirty answer using annotate:

import matplotlib.pyplot plt import numpy np  x = 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 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     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)]))         = 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 offsets more pleasing results.


Comments

Popular posts from this blog

qt - Using float or double for own QML classes -

Create Outlook appointment via C# .Net -

ios - Swift Array Resetting Itself -