FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
bashplotlib/bashplotlib/scatterplot.py at master · andrewgiessel/bashplotlib · GitHub
andrewgiessel
/
bashplotlib
Public
forked from
glamp/bashplotlib
Notifications
You must be signed in to change notification settings
Fork
0
Star
1
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
bashplotlib
/
bashplotlib
/
scatterplot.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
113 lines (91 loc) · 3.58 KB
Breadcrumbs
bashplotlib
/
bashplotlib
/
scatterplot.py
Copy path
File metadata and controls
113 lines (91 loc) · 3.58 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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Plotting terminal based scatterplots
"""
from
__future__
import
print_function
import
csv
import
sys
import
optparse
from
.
utils
.
helpers
import
*
from
.
utils
.
commandhelp
import
scatter
def
get_scale
(
series
,
is_y
=
False
,
steps
=
20
):
min_val
=
min
(
series
)
max_val
=
max
(
series
)
scaled_series
=
[]
for
x
in
drange
(
min_val
,
max_val
, (
max_val
-
min_val
)
/
steps
,
include_stop
=
True
):
if
x
>
0
and
scaled_series
and
max
(
scaled_series
)
<
0
:
scaled_series
.
append
(
0.0
)
scaled_series
.
append
(
x
)
if
is_y
:
scaled_series
.
reverse
()
return
scaled_series
def
_plot_scatter
(
xs
,
ys
,
size
,
pch
,
colour
,
title
,
cs
):
plotted
=
set
()
if
title
:
print
(
box_text
(
title
,
2
*
len
(
get_scale
(
xs
,
False
,
size
))
+
1
))
print
(
"-"
*
(
2
*
len
(
get_scale
(
xs
,
False
,
size
))
+
2
))
for
y
in
get_scale
(
ys
,
True
,
size
):
print
(
"|"
,
end
=
' '
)
for
x
in
get_scale
(
xs
,
False
,
size
):
point
=
" "
for
(
i
, (
xp
,
yp
))
in
enumerate
(
zip
(
xs
,
ys
)):
if
xp
<=
x
and
yp
>=
y
and
(
xp
,
yp
)
not
in
plotted
:
point
=
pch
plotted
.
add
((
xp
,
yp
))
if
cs
:
colour
=
cs
[
i
]
printcolour
(
point
,
True
,
colour
)
print
(
" |"
)
print
(
"-"
*
(
2
*
len
(
get_scale
(
xs
,
False
,
size
))
+
2
))
def
plot_scatter
(
f
,
xs
,
ys
,
size
,
pch
,
colour
,
title
):
"""
Form a complex number.
Arguments:
f -- comma delimited file w/ x,y coordinates
xs -- if f not specified this is a file w/ x coordinates
ys -- if f not specified this is a filew / y coordinates
size -- size of the plot
pch -- shape of the points (any character)
colour -- colour of the points
title -- title of the plot
"""
cs
=
None
if
f
:
if
isinstance
(
f
,
str
):
with
open
(
f
)
as
fh
:
data
=
[
tuple
(
line
.
strip
().
split
(
','
))
for
line
in
fh
]
else
:
data
=
[
tuple
(
line
.
strip
().
split
(
','
))
for
line
in
f
]
xs
=
[
float
(
i
[
0
])
for
i
in
data
]
ys
=
[
float
(
i
[
1
])
for
i
in
data
]
if
len
(
data
[
0
])
>
2
:
cs
=
[
i
[
2
].
strip
()
for
i
in
data
]
elif
isinstance
(
xs
,
list
)
and
isinstance
(
ys
,
list
):
pass
else
:
with
open
(
xs
)
as
fh
:
xs
=
[
float
(
str
(
row
).
strip
())
for
row
in
fh
]
with
open
(
ys
)
as
fh
:
ys
=
[
float
(
str
(
row
).
strip
())
for
row
in
fh
]
_plot_scatter
(
xs
,
ys
,
size
,
pch
,
colour
,
title
,
cs
)
def
main
():
parser
=
optparse
.
OptionParser
(
usage
=
scatter
[
'usage'
])
parser
.
add_option
(
'-f'
,
'--file'
,
help
=
'a csv w/ x and y coordinates'
,
default
=
None
,
dest
=
'f'
)
parser
.
add_option
(
'-t'
,
'--title'
,
help
=
'title for the chart'
,
default
=
""
,
dest
=
't'
)
parser
.
add_option
(
'-x'
,
help
=
'x coordinates'
,
default
=
None
,
dest
=
'x'
)
parser
.
add_option
(
'-y'
,
help
=
'y coordinates'
,
default
=
None
,
dest
=
'y'
)
parser
.
add_option
(
'-s'
,
'--size'
,
help
=
'y coordinates'
,
default
=
20
,
dest
=
'size'
,
type
=
'int'
)
parser
.
add_option
(
'-p'
,
'--pch'
,
help
=
'shape of point'
,
default
=
"x"
,
dest
=
'pch'
)
parser
.
add_option
(
'-c'
,
'--colour'
,
help
=
'colour of the plot (%s)'
%
colour_help
,
default
=
'default'
,
dest
=
'colour'
)
opts
,
args
=
parser
.
parse_args
()
if
opts
.
f
is
None
and
(
opts
.
x
is
None
or
opts
.
y
is
None
):
opts
.
f
=
sys
.
stdin
.
readlines
()
if
opts
.
f
or
(
opts
.
x
and
opts
.
y
):
plot_scatter
(
opts
.
f
,
opts
.
x
,
opts
.
y
,
opts
.
size
,
opts
.
pch
,
opts
.
colour
,
opts
.
t
)
else
:
print
(
"nothing to plot!"
)
if
__name__
==
"__main__"
:
main
()
Back
|
FazBrowse Home
|
New Git URL