Skip to content

Commit

Permalink
Ensure charts always have axis labels. Closes #641.
Browse files Browse the repository at this point in the history
  • Loading branch information
onyxfish committed Nov 15, 2016
1 parent 8ee59ee commit be5340e
Show file tree
Hide file tree
Showing 6 changed files with 237 additions and 21 deletions.
14 changes: 12 additions & 2 deletions agate/table/bar_chart.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,19 @@ def bar_chart(self, label=0, value=1, path=None, width=None, height=None):
:param height:
The height of the output SVG.
"""
if type(label) is int:
label_name = self.column_names[label]
else:
label_name = label

if type(value) is int:
value_name = self.column_names[value]
else:
value_name = value

chart = leather.Chart()
chart.add_x_axis(name=value)
chart.add_y_axis(name=label)
chart.add_x_axis(name=value_name)
chart.add_y_axis(name=label_name)
chart.add_bars(self, x=value, y=label)

return chart.to_svg(path=path, width=width, height=height)
14 changes: 12 additions & 2 deletions agate/table/column_chart.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,19 @@ def column_chart(self, label=0, value=1, path=None, width=None, height=None):
:param height:
The height of the output SVG.
"""
if type(label) is int:
label_name = self.column_names[label]
else:
label_name = label

if type(value) is int:
value_name = self.column_names[value]
else:
value_name = value

chart = leather.Chart()
chart.add_x_axis(name=label)
chart.add_y_axis(name=value)
chart.add_x_axis(name=label_name)
chart.add_y_axis(name=value_name)
chart.add_columns(self, x=label, y=value)

return chart.to_svg(path=path, width=width, height=height)
14 changes: 12 additions & 2 deletions agate/table/line_chart.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,19 @@ def line_chart(self, x=0, y=1, path=None, width=None, height=None):
:param height:
The height of the output SVG.
"""
if type(x) is int:
x_name = self.column_names[x]
else:
x_name = x

if type(y) is int:
y_name = self.column_names[y]
else:
y_name = y

chart = leather.Chart()
chart.add_x_axis(name=x)
chart.add_y_axis(name=y)
chart.add_x_axis(name=x_name)
chart.add_y_axis(name=y_name)
chart.add_line(self, x=x, y=y)

return chart.to_svg(path=path, width=width, height=height)
14 changes: 12 additions & 2 deletions agate/table/scatterplot.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,19 @@ def scatterplot(self, x=0, y=1, path=None, width=None, height=None):
:param height:
The height of the output SVG.
"""
if type(x) is int:
x_name = self.column_names[x]
else:
x_name = x

if type(y) is int:
y_name = self.column_names[y]
else:
y_name = y

chart = leather.Chart()
chart.add_x_axis(name=x)
chart.add_y_axis(name=y)
chart.add_x_axis(name=x_name)
chart.add_y_axis(name=y_name)
chart.add_dots(self, x=x, y=y)

return chart.to_svg(path=path, width=width, height=height)
16 changes: 16 additions & 0 deletions tests/test_table/test_charting.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@ def test_bar_chart(self):
self.assertElementCount(svg, '.bars', 1)
self.assertElementCount(svg, 'rect', 3)

text2 = self.table.bar_chart(label=2, value=0)

self.assertEqual(text, text2)

def test_column_chart(self):
text = self.table.column_chart(label='three', value='one')
svg = self.parse_svg(text)
Expand All @@ -46,6 +50,10 @@ def test_column_chart(self):
self.assertElementCount(svg, '.columns', 1)
self.assertElementCount(svg, 'rect', 3)

text2 = self.table.column_chart(label=2, value=0)

self.assertEqual(text, text2)

def test_line_chart(self):
text = self.table.line_chart(x='one', y='two')
svg = self.parse_svg(text)
Expand All @@ -54,6 +62,10 @@ def test_line_chart(self):
self.assertElementCount(svg, '.series', 1)
self.assertElementCount(svg, 'path', 1)

text2 = self.table.line_chart(x=0, y=1)

self.assertEqual(text, text2)

def test_scatterplot(self):
text = self.table.scatterplot(x='one', y='two')
svg = self.parse_svg(text)
Expand All @@ -62,3 +74,7 @@ def test_scatterplot(self):
self.assertElementCount(svg, '.series', 1)
self.assertElementCount(svg, '.dots', 1)
self.assertElementCount(svg, 'circle', 2)

text2 = self.table.scatterplot(x=0, y=1)

self.assertEqual(text, text2)
186 changes: 173 additions & 13 deletions tutorial.ipynb

Large diffs are not rendered by default.

0 comments on commit be5340e

Please sign in to comment.