FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
matplotlib/examples/units/evans_test.py at pre-commit · ianhi/matplotlib · GitHub
ianhi
matplotlib
Repository navigation
Code
Pull requests
5
(5)
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
matplotlib
/
examples
/
units
/
evans_test.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
87 lines (68 loc) · 2.16 KB
Breadcrumbs
matplotlib
/
examples
/
units
/
evans_test.py
Copy path
File metadata and controls
87 lines (68 loc) · 2.16 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
"""
==========
Evans test
==========
A mockup "Foo" units class which supports conversion and different tick
formatting depending on the "unit". Here the "unit" is just a scalar
conversion factor, but this example shows that Matplotlib is entirely agnostic
to what kind of units client packages use.
"""
import
numpy
as
np
import
matplotlib
.
units
as
units
import
matplotlib
.
ticker
as
ticker
import
matplotlib
.
pyplot
as
plt
class
Foo
:
def
__init__
(
self
,
val
,
unit
=
1.0
):
self
.
unit
=
unit
self
.
_val
=
val
*
unit
def
value
(
self
,
unit
):
if
unit
is
None
:
unit
=
self
.
unit
return
self
.
_val
/
unit
class
FooConverter
(
units
.
ConversionInterface
):
@
staticmethod
def
axisinfo
(
unit
,
axis
):
"""Return the Foo AxisInfo."""
if
unit
==
1.0
or
unit
==
2.0
:
return
units
.
AxisInfo
(
majloc
=
ticker
.
IndexLocator
(
8
,
0
),
majfmt
=
ticker
.
FormatStrFormatter
(
"VAL: %s"
),
label
=
'foo'
,
)
else
:
return
None
@
staticmethod
def
convert
(
obj
,
unit
,
axis
):
"""
Convert *obj* using *unit*.
If *obj* is a sequence, return the converted sequence.
"""
if
np
.
iterable
(
obj
):
return
[
o
.
value
(
unit
)
for
o
in
obj
]
else
:
return
obj
.
value
(
unit
)
@
staticmethod
def
default_units
(
x
,
axis
):
"""Return the default unit for *x* or None."""
if
np
.
iterable
(
x
):
for
thisx
in
x
:
return
thisx
.
unit
else
:
return
x
.
unit
units
.
registry
[
Foo
]
=
FooConverter
()
# create some Foos
x
=
[
Foo
(
val
,
1.0
)
for
val
in
range
(
0
,
50
,
2
)]
# and some arbitrary y data
y
=
[
i
for
i
in
range
(
len
(
x
))]
fig
, (
ax1
,
ax2
)
=
plt
.
subplots
(
1
,
2
)
fig
.
suptitle
(
"Custom units"
)
fig
.
subplots_adjust
(
bottom
=
0.2
)
# plot specifying units
ax2
.
plot
(
x
,
y
,
'o'
,
xunits
=
2.0
)
ax2
.
set_title
(
"xunits = 2.0"
)
plt
.
setp
(
ax2
.
get_xticklabels
(),
rotation
=
30
,
ha
=
'right'
)
# plot without specifying units; will use the None branch for axisinfo
ax1
.
plot
(
x
,
y
)
# uses default units
ax1
.
set_title
(
'default units'
)
plt
.
setp
(
ax1
.
get_xticklabels
(),
rotation
=
30
,
ha
=
'right'
)
plt
.
show
()
Back
|
FazBrowse Home
|
New Git URL