Hi Patrick,
This solution works well. I really like the floating text that moves along
with the lines.
I am curious to know if there is a way to display the y-axis labels instead
of the raw position?
I passed a tuple array to setTicks to modify the tick labels. I would want
to be able to show these values in the Infiniteline text.
yticks=list()
for i in dataFinal:
pl.plot(i + count)
yticks.append((count, depths[plotCount]))
count +=120
plotCount += 1
ay=pl.getAxis('left')
ay.setTicks([yticks])
Where dataFinal is a list of Numpy arrays containing the raw data
Thank you!
Greydon
On Wednesday, January 16, 2019 at 10:57:18 PM UTC-5, Patrick wrote:
>
> Hi,
>
> I think what you are asking is you'd like the label text to always remain
> inside the region, rather than being at a fixed point. So use the SetPos
> method (it's inherited from QGraphicsItem) to move it on update.
>
> Also, here's an example with couple of other ideas: why not update the
> label whenever the region is changed?
>
> import sys
> from PyQt5 import QtCore, QtGui, QtWidgets
> import numpy as np
> import pyqtgraph as pg
> from pyqtgraph.graphicsItems.InfiniteLine import InfLineLabel
>
> app = QtWidgets.QApplication(sys.argv)
>
> my_data = np.random.random(10)
>
> win = pg.GraphicsWindow()
> pl = win.addPlot(row=1, col=0)
> pl.plot(my_data)
> ti = pg.TextItem('', anchor=(0,1.1), color=(146, 146, 146), fill='w')
> pl.addItem(ti)
> lr = pg.LinearRegionItem(orientation=pg.LinearRegionItem.Horizontal)
> pl.addItem(lr)
>
> # Here's another idea:
> # Add the value label functionality to the InfiniteLine components of the
> LinearRegionItem
> lr.lines[0].label = InfLineLabel(lr.lines[0], text="{value:0.3f}")
> lr.lines[1].label = InfLineLabel(lr.lines[1], text="{value:0.3f}")
>
> def update_regiontext():
> lo,hi = lr.getRegion()
> ti.setText("{:0.3f} {:0.3f}".format(lo, hi))
> ti.setPos(0, lo)
>
> update_regiontext()
>
> # If you really want to only update on click then uncomment code below
> # def on_click(ev):
> # if (ev.button() == QtCore.Qt.LeftButton):
> # update_regiontext()
> # ev.accept()
> # pl.vb.mouseClickEvent = on_click
>
> # Otherwise, this will update whenever the region is changed
> lr.sigRegionChanged.connect(update_regiontext)
>
> win.show()
> sys.exit(app.exec_())
>
>
> Patrick
>
>
> On Thursday, 17 January 2019 06:26:27 UTC+10:30, Greydon Gilmore wrote:
>>
>> Hello,
>>
>> I am using pg.LinearRegionItem to select an area on the plot.
>> Once I have selected the area I have set up a mouse event, that when left
>> button is clicked the region borders will be displayed using pg.TextItem.
>>
>> However, I want to be able to replace the pg.TextItem is the
>> LinearRegionItem is changed and a new mouse click is detected
>>
>> win = pg.GraphicsWindow()
>> pl = win.addPlot(row=1, col=0)
>> pl.plot(my_data)
>> lr = pg.LinearRegionItem(orientation=pg.LinearRegionItem.Horizontal)
>> pl.addItem(lr)
>>
>> def on_click(ev):
>> if (ev.button() == QtCore.Qt.LeftButton):
>> lo,hi = lr.getRegion()
>> print (lo,hi)
>> ti = pg.TextItem('', anchor=(0,1.1), color=(146, 146, 146), fill='w')
>> pl.addItem(ti)
>> ti.setText(str(round(lo,3))+ ' ' + str(round(hi,3)))
>> ev.accept()
>>
>> pl.vb.mouseClickEvent = on_click
>>
>> Any help would be appreciated!
>>
>> Greydon
>>
>
--
You received this message because you are subscribed to the Google Groups
"pyqtgraph" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/pyqtgraph/c9c72e65-e2c6-4004-82f7-d9299ac2ae0f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.