xlabel - Información sobre herramientas de punto y línea en matplotlib?
plot title font size matplotlib (3)
Tengo un gráfico con algunos segmentos de línea ( LineCollection ) y algunos puntos. Estas líneas y puntos tienen algunos valores asociados que no están graficados. Me gustaría poder agregar un consejo sobre el mouse u otro método para encontrar fácilmente el valor asociado para los puntos y la línea. ¿Es esto posible para segmentos de puntos o líneas?
Para los puntos, he encontrado una manera, pero tienes que usar el backend de WX
"""Example of how to use wx tooltips on a matplotlib figure window.
Adapted from http://osdir.com/ml/python.matplotlib.devel/2006-09/msg00048.html"""
import matplotlib as mpl
mpl.use(''WXAgg'')
mpl.interactive(False)
import pylab as pl
from pylab import get_current_fig_manager as gcfm
import wx
import numpy as np
import random
class wxToolTipExample(object):
def __init__(self):
self.figure = pl.figure()
self.axis = self.figure.add_subplot(111)
# create a long tooltip with newline to get around wx bug (in v2.6.3.3)
# where newlines aren''t recognized on subsequent self.tooltip.SetTip() calls
self.tooltip = wx.ToolTip(tip=''tip with a long %s line and a newline/n'' % ('' ''*100))
gcfm().canvas.SetToolTip(self.tooltip)
self.tooltip.Enable(False)
self.tooltip.SetDelay(0)
self.figure.canvas.mpl_connect(''motion_notify_event'', self._onMotion)
self.dataX = np.arange(0, 100)
self.dataY = [random.random()*100.0 for x in xrange(len(self.dataX))]
self.axis.plot(self.dataX, self.dataY, linestyle=''-'', marker=''o'', markersize=10, label=''myplot'')
def _onMotion(self, event):
collisionFound = False
if event.xdata != None and event.ydata != None: # mouse is inside the axes
for i in xrange(len(self.dataX)):
radius = 1
if abs(event.xdata - self.dataX[i]) < radius and abs(event.ydata - self.dataY[i]) < radius:
top = tip=''x=%f/ny=%f'' % (event.xdata, event.ydata)
self.tooltip.SetTip(tip)
self.tooltip.Enable(True)
collisionFound = True
break
if not collisionFound:
self.tooltip.Enable(False)
example = wxToolTipExample()
pl.show()
Es un hilo viejo, pero en caso de que alguien esté buscando cómo agregar información sobre herramientas a las líneas, esto funciona:
import matplotlib.pyplot as plt
import numpy as np
import mpld3
f, ax = plt.subplots()
x1 = np.array([0,100], int)
x2 = np.array([10,110], int)
y = np.array([0,100], int)
line = ax.plot(x1, y)
mpld3.plugins.connect(f, mpld3.plugins.LineLabelTooltip(line[0], label=''label 1''))
line = ax.plot(x2, y)
mpld3.plugins.connect(f, mpld3.plugins.LineLabelTooltip(line[0], label=''label 2''))
mpld3.show()
Tal vez una variación de esta receta haría lo que quiere para los puntos? Al menos no está restringido a wx back-end.