Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Benjamin Jakimow
EO Time Series Viewer
Commits
22ecd3cc
Commit
22ecd3cc
authored
Mar 16, 2014
by
JosefNevrly
Browse files
PlotItem.showValues fixed (was not implemented before).
parent
c8f03e82
Changes
1
Hide whitespace changes
Inline
Side-by-side
pyqtgraph/graphicsItems/AxisItem.py
View file @
22ecd3cc
...
...
@@ -775,92 +775,92 @@ class AxisItem(GraphicsWidget):
textSize2
=
0
textRects
=
[]
textSpecs
=
[]
## list of draw
textSize2
=
0
for
i
in
range
(
len
(
tickLevels
)):
## Get the list of strings to display for this level
if
tickStrings
is
None
:
spacing
,
values
=
tickLevels
[
i
]
strings
=
self
.
tickStrings
(
values
,
self
.
autoSIPrefixScale
*
self
.
scale
,
spacing
)
else
:
strings
=
tickStrings
[
i
]
if
len
(
strings
)
==
0
:
continue
## ignore strings belonging to ticks that were previously ignored
for
j
in
range
(
len
(
strings
)):
if
tickPositions
[
i
][
j
]
is
None
:
strings
[
j
]
=
None
## Measure density of text; decide whether to draw this level
rects
=
[]
for
s
in
strings
:
if
s
is
None
:
rects
.
append
(
None
)
if
self
.
showValues
:
for
i
in
range
(
len
(
tickLevels
)):
## Get the list of strings to display for this level
if
tickStrings
is
None
:
spacing
,
values
=
tickLevels
[
i
]
strings
=
self
.
tickStrings
(
values
,
self
.
autoSIPrefixScale
*
self
.
scale
,
spacing
)
else
:
br
=
p
.
boundingRect
(
QtCore
.
QRectF
(
0
,
0
,
100
,
100
),
QtCore
.
Qt
.
AlignCenter
,
asUnicode
(
s
))
## boundingRect is usually just a bit too large
## (but this probably depends on per-font metrics?)
br
.
setHeight
(
br
.
height
()
*
0.8
)
strings
=
tickStrings
[
i
]
rects
.
append
(
br
)
textRects
.
append
(
rects
[
-
1
])
if
i
>
0
:
## always draw top level
## measure all text, make sure there's enough room
if
axis
==
0
:
textSize
=
np
.
sum
([
r
.
height
()
for
r
in
textRects
])
textSize2
=
np
.
max
([
r
.
width
()
for
r
in
textRects
])
if
textRects
else
0
else
:
textSize
=
np
.
sum
([
r
.
width
()
for
r
in
textRects
])
textSize2
=
np
.
max
([
r
.
height
()
for
r
in
textRects
])
if
textRects
else
0
## If the strings are too crowded, stop drawing text now.
## We use three different crowding limits based on the number
## of texts drawn so far.
textFillRatio
=
float
(
textSize
)
/
lengthInPixels
finished
=
False
for
nTexts
,
limit
in
self
.
style
[
'textFillLimits'
]:
if
len
(
textSpecs
)
>=
nTexts
and
textFillRatio
>=
limit
:
finished
=
True
if
len
(
strings
)
==
0
:
continue
## ignore strings belonging to ticks that were previously ignored
for
j
in
range
(
len
(
strings
)):
if
tickPositions
[
i
][
j
]
is
None
:
strings
[
j
]
=
None
## Measure density of text; decide whether to draw this level
rects
=
[]
for
s
in
strings
:
if
s
is
None
:
rects
.
append
(
None
)
else
:
br
=
p
.
boundingRect
(
QtCore
.
QRectF
(
0
,
0
,
100
,
100
),
QtCore
.
Qt
.
AlignCenter
,
asUnicode
(
s
))
## boundingRect is usually just a bit too large
## (but this probably depends on per-font metrics?)
br
.
setHeight
(
br
.
height
()
*
0.8
)
rects
.
append
(
br
)
textRects
.
append
(
rects
[
-
1
])
if
i
>
0
:
## always draw top level
## measure all text, make sure there's enough room
if
axis
==
0
:
textSize
=
np
.
sum
([
r
.
height
()
for
r
in
textRects
])
textSize2
=
np
.
max
([
r
.
width
()
for
r
in
textRects
])
if
textRects
else
0
else
:
textSize
=
np
.
sum
([
r
.
width
()
for
r
in
textRects
])
textSize2
=
np
.
max
([
r
.
height
()
for
r
in
textRects
])
if
textRects
else
0
## If the strings are too crowded, stop drawing text now.
## We use three different crowding limits based on the number
## of texts drawn so far.
textFillRatio
=
float
(
textSize
)
/
lengthInPixels
finished
=
False
for
nTexts
,
limit
in
self
.
style
[
'textFillLimits'
]:
if
len
(
textSpecs
)
>=
nTexts
and
textFillRatio
>=
limit
:
finished
=
True
break
if
finished
:
break
if
finished
:
break
#spacing, values = tickLevels[best]
#strings = self.tickStrings(values, self.scale, spacing)
for
j
in
range
(
len
(
strings
)):
vstr
=
strings
[
j
]
if
vstr
is
None
:
## this tick was ignored because it is out of bounds
continue
vstr
=
asUnicode
(
vstr
)
x
=
tickPositions
[
i
][
j
]
#textRect = p.boundingRect(QtCore.QRectF(0, 0, 100, 100), QtCore.Qt.AlignCenter, vstr)
textRect
=
rects
[
j
]
height
=
textRect
.
height
()
width
=
textRect
.
width
()
#self.textHeight = height
offset
=
max
(
0
,
self
.
tickLength
)
+
textOffset
if
self
.
orientation
==
'left'
:
textFlags
=
QtCore
.
Qt
.
TextDontClip
|
QtCore
.
Qt
.
AlignRight
|
QtCore
.
Qt
.
AlignVCenter
rect
=
QtCore
.
QRectF
(
tickStop
-
offset
-
width
,
x
-
(
height
/
2
),
width
,
height
)
elif
self
.
orientation
==
'right'
:
textFlags
=
QtCore
.
Qt
.
TextDontClip
|
QtCore
.
Qt
.
AlignLeft
|
QtCore
.
Qt
.
AlignVCenter
rect
=
QtCore
.
QRectF
(
tickStop
+
offset
,
x
-
(
height
/
2
),
width
,
height
)
elif
self
.
orientation
==
'top'
:
textFlags
=
QtCore
.
Qt
.
TextDontClip
|
QtCore
.
Qt
.
AlignCenter
|
QtCore
.
Qt
.
AlignBottom
rect
=
QtCore
.
QRectF
(
x
-
width
/
2.
,
tickStop
-
offset
-
height
,
width
,
height
)
elif
self
.
orientation
==
'bottom'
:
textFlags
=
QtCore
.
Qt
.
TextDontClip
|
QtCore
.
Qt
.
AlignCenter
|
QtCore
.
Qt
.
AlignTop
rect
=
QtCore
.
QRectF
(
x
-
width
/
2.
,
tickStop
+
offset
,
width
,
height
)
#p.setPen(self.pen())
#p.drawText(rect, textFlags, vstr)
textSpecs
.
append
((
rect
,
textFlags
,
vstr
))
profiler
(
'compute text'
)
#spacing, values = tickLevels[best]
#strings = self.tickStrings(values, self.scale, spacing)
for
j
in
range
(
len
(
strings
)):
vstr
=
strings
[
j
]
if
vstr
is
None
:
## this tick was ignored because it is out of bounds
continue
vstr
=
asUnicode
(
vstr
)
x
=
tickPositions
[
i
][
j
]
#textRect = p.boundingRect(QtCore.QRectF(0, 0, 100, 100), QtCore.Qt.AlignCenter, vstr)
textRect
=
rects
[
j
]
height
=
textRect
.
height
()
width
=
textRect
.
width
()
#self.textHeight = height
offset
=
max
(
0
,
self
.
tickLength
)
+
textOffset
if
self
.
orientation
==
'left'
:
textFlags
=
QtCore
.
Qt
.
TextDontClip
|
QtCore
.
Qt
.
AlignRight
|
QtCore
.
Qt
.
AlignVCenter
rect
=
QtCore
.
QRectF
(
tickStop
-
offset
-
width
,
x
-
(
height
/
2
),
width
,
height
)
elif
self
.
orientation
==
'right'
:
textFlags
=
QtCore
.
Qt
.
TextDontClip
|
QtCore
.
Qt
.
AlignLeft
|
QtCore
.
Qt
.
AlignVCenter
rect
=
QtCore
.
QRectF
(
tickStop
+
offset
,
x
-
(
height
/
2
),
width
,
height
)
elif
self
.
orientation
==
'top'
:
textFlags
=
QtCore
.
Qt
.
TextDontClip
|
QtCore
.
Qt
.
AlignCenter
|
QtCore
.
Qt
.
AlignBottom
rect
=
QtCore
.
QRectF
(
x
-
width
/
2.
,
tickStop
-
offset
-
height
,
width
,
height
)
elif
self
.
orientation
==
'bottom'
:
textFlags
=
QtCore
.
Qt
.
TextDontClip
|
QtCore
.
Qt
.
AlignCenter
|
QtCore
.
Qt
.
AlignTop
rect
=
QtCore
.
QRectF
(
x
-
width
/
2.
,
tickStop
+
offset
,
width
,
height
)
#p.setPen(self.pen())
#p.drawText(rect, textFlags, vstr)
textSpecs
.
append
((
rect
,
textFlags
,
vstr
))
profiler
(
'compute text'
)
## update max text size if needed.
self
.
_updateMaxTextSize
(
textSize2
)
## update max text size if needed.
self
.
_updateMaxTextSize
(
textSize2
)
return
(
axisSpec
,
tickSpecs
,
textSpecs
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment