tiempo real matrices histograma graficos grafico graficas graficar como color cambiar barras python matplotlib plot line contour

real - histograma python



Trazar la línea discontinua interrumpida con datos(similar a la gráfica de contorno) (1)

Respuesta rápida y sucia usando annotate :

import matplotlib.pyplot as plt import numpy as 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 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")

Rendimientos:

Puedes jugar con las compensaciones para obtener resultados más agradables.

Estoy atascado con un problema (con suerte) simple. Mi objetivo es trazar una línea discontinua interrumpida con datos (no solo texto).

Como solo descubrí cómo crear una línea discontinua a través de linestyle = ''dashed'' , se agradece cualquier ayuda para colocar los datos entre los guiones.

Algo similar, con respecto al etiquetado, ya existe con Matplotlib, como vi en la demostración de la línea de contorno .

Actualizar:

El enlace a la pregunta mencionado por Richard en los comentarios fue muy útil, pero no fue el 100% como mencioné en los comentarios. Actualmente, lo hago de esta manera:

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 to 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))

Aquí puedes ver una instantánea del resultado. El menos 20 ° C es sin BBox.