newsworthycharts 1.63.1__py3-none-any.whl → 1.63.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- newsworthycharts/__init__.py +1 -1
- newsworthycharts/chart.py +33 -20
- newsworthycharts/lib/utils.py +2 -1
- {newsworthycharts-1.63.1.dist-info → newsworthycharts-1.63.3.dist-info}/METADATA +11 -2
- {newsworthycharts-1.63.1.dist-info → newsworthycharts-1.63.3.dist-info}/RECORD +8 -8
- {newsworthycharts-1.63.1.dist-info → newsworthycharts-1.63.3.dist-info}/LICENSE.txt +0 -0
- {newsworthycharts-1.63.1.dist-info → newsworthycharts-1.63.3.dist-info}/WHEEL +0 -0
- {newsworthycharts-1.63.1.dist-info → newsworthycharts-1.63.3.dist-info}/top_level.txt +0 -0
newsworthycharts/__init__.py
CHANGED
newsworthycharts/chart.py
CHANGED
@@ -486,35 +486,43 @@ class Chart(object):
|
|
486
486
|
if not self.show_ticks:
|
487
487
|
self.category_axis.set_visible(False)
|
488
488
|
else:
|
489
|
-
# Increase number of decimals until we have no duplicated y axis ticks,
|
490
|
-
# unless .decimals explicitly set.
|
491
|
-
self._fig.canvas.draw()
|
492
|
-
tl = [x.get_text() for x in self.value_axis.get_ticklabels()]
|
493
|
-
tl_ = [x for (i, x) in enumerate(tl) if tl[i - 1] != x]
|
494
489
|
autodetect_decimals = self.decimals is None
|
495
|
-
if
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
490
|
+
if autodetect_decimals:
|
491
|
+
# Are all numbers integers?
|
492
|
+
|
493
|
+
def flatten(list_of_lists):
|
494
|
+
return [item for sublist in list_of_lists for item in sublist]
|
495
|
+
|
496
|
+
if "values" in self.data and all([x.is_integer() for x in flatten(self.data.values)]):
|
497
|
+
self.decimals = 0
|
498
|
+
else:
|
499
|
+
# Increase number of decimals until we have no duplicated y axis ticks,
|
500
|
+
# unless .decimals explicitly set.
|
502
501
|
self._fig.canvas.draw()
|
503
502
|
tl = [x.get_text() for x in self.value_axis.get_ticklabels()]
|
504
503
|
tl_ = [x for (i, x) in enumerate(tl) if tl[i - 1] != x]
|
505
|
-
if len(
|
506
|
-
|
507
|
-
|
508
|
-
keep_trying
|
509
|
-
|
510
|
-
|
511
|
-
|
504
|
+
if len(tl_) < len(tl):
|
505
|
+
try_dec = 1
|
506
|
+
keep_trying = True
|
507
|
+
while keep_trying:
|
508
|
+
self.decimals = try_dec
|
509
|
+
if len(self.data):
|
510
|
+
self._add_data()
|
511
|
+
self._fig.canvas.draw()
|
512
|
+
tl = [x.get_text() for x in self.value_axis.get_ticklabels()]
|
513
|
+
tl_ = [x for (i, x) in enumerate(tl) if tl[i - 1] != x]
|
514
|
+
if len(tl) == len(tl_):
|
515
|
+
keep_trying = False
|
516
|
+
if try_dec > 2:
|
517
|
+
keep_trying = False
|
518
|
+
try_dec += 1
|
519
|
+
# Remove duplicate y ticks (most should be gone as per above)
|
512
520
|
ticks = self.value_axis.get_ticklabels()
|
513
521
|
ticks_ = [x for (i, x) in enumerate(ticks) if ticks[i - 1].get_text() != x.get_text()]
|
514
522
|
if len(ticks_) < len(ticks):
|
515
523
|
y = [float(x._y) for x in ticks_]
|
516
524
|
if self.decimals == 0:
|
517
|
-
# Recrate with
|
525
|
+
# Recrate with integres
|
518
526
|
import math
|
519
527
|
_bottom = min(y)
|
520
528
|
_top = math.ceil(max(y))
|
@@ -522,6 +530,11 @@ class Chart(object):
|
|
522
530
|
y = range(_bottom, _top + 1)
|
523
531
|
y = [float(x) for x in y]
|
524
532
|
self.value_axis.set_ticks(y)
|
533
|
+
if self.decimals == 0:
|
534
|
+
# remove non integer ticks
|
535
|
+
y = [float(x._y) for x in ticks]
|
536
|
+
y = [x for x in y if x.is_integer()]
|
537
|
+
self.value_axis.set_ticks(y)
|
525
538
|
|
526
539
|
for a in self.annotations:
|
527
540
|
self._annotate_point(a["text"], a["xy"], a["direction"])
|
newsworthycharts/lib/utils.py
CHANGED
@@ -167,9 +167,10 @@ def guess_date_interval(data):
|
|
167
167
|
for serie in data:
|
168
168
|
dates = [to_date(x[0]) for x in serie]
|
169
169
|
years = [x.year for x in dates]
|
170
|
+
decades = [x.year // 10 * 10 for x in dates]
|
170
171
|
|
171
172
|
# Are there decades with more than one year?
|
172
|
-
if len(years) > len(set(
|
173
|
+
if len(set(years)) > len(set(decades)):
|
173
174
|
interval = "yearly"
|
174
175
|
|
175
176
|
months = [x.month for x in dates]
|
@@ -1,9 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: newsworthycharts
|
3
|
-
Version: 1.63.
|
3
|
+
Version: 1.63.3
|
4
4
|
Summary: Matplotlib wrapper to create charts and publish them on Amazon S3
|
5
5
|
Home-page: https://github.com/jplusplus/newsworthycharts
|
6
|
-
Download-URL: https://github.com/jplusplus/newsworthycharts/archive/1.63.
|
6
|
+
Download-URL: https://github.com/jplusplus/newsworthycharts/archive/1.63.3.tar.gz
|
7
7
|
Author: Jens Finnäs and Leo Wallentin, J++ Stockholm
|
8
8
|
Author-email: stockholm@jplusplus.org
|
9
9
|
License: MIT
|
@@ -252,6 +252,15 @@ Roadmap
|
|
252
252
|
Changelog
|
253
253
|
---------
|
254
254
|
|
255
|
+
- 1.63.3
|
256
|
+
|
257
|
+
- Fixed bug in decimal auto detection
|
258
|
+
- Remove non integer value ticks when decimals are set to 0
|
259
|
+
|
260
|
+
- 1.63.2
|
261
|
+
|
262
|
+
- Fixed bug in interval detection in SerialChart, affecting yearly data
|
263
|
+
|
255
264
|
- 1.63.1
|
256
265
|
|
257
266
|
- Fix version number in
|
@@ -1,7 +1,7 @@
|
|
1
|
-
newsworthycharts/__init__.py,sha256=
|
1
|
+
newsworthycharts/__init__.py,sha256=9VNVfOA2MGy4aVQdkpN7EVvF2P5SKlJF0Q2_X1-4BeM,1160
|
2
2
|
newsworthycharts/bubblemap.py,sha256=nkocWmpiFgfjEuJGAsthjY5X7Q56jXWsZHUGXw4PwgE,2587
|
3
3
|
newsworthycharts/categoricalchart.py,sha256=LwOZ3VbNy9vzvoK0s77AkbfMt4CXVDSAhnsnBInUIrE,14764
|
4
|
-
newsworthycharts/chart.py,sha256=
|
4
|
+
newsworthycharts/chart.py,sha256=DzyqHQ_t-LQVya_FymAfDQWzPLYB4GTk9wFOM95N-7Y,32358
|
5
5
|
newsworthycharts/choroplethmap.py,sha256=bCLf4kcchp1C2djg5AxcOM8BdbaMj0xg7UHrZsDafhI,8013
|
6
6
|
newsworthycharts/datawrapper.py,sha256=RRkAVTpfP4updKxUIBaSmKuBi2RUVPaBRF8HDQhlGGA,11250
|
7
7
|
newsworthycharts/map.py,sha256=c409jEO4L8Yr780sJRC0RchR44roAlgOUDAkuk1SfRg,6057
|
@@ -21,15 +21,15 @@ newsworthycharts/lib/formatter.py,sha256=GNH43hE0bC17OgiV8LYH3YUrEhm7OJh9XzfSV4H
|
|
21
21
|
newsworthycharts/lib/geography.py,sha256=K0_teFmuPJwXX7Py-amJB_1YY5_gL2kBYhz1LrRCyTg,584
|
22
22
|
newsworthycharts/lib/locator.py,sha256=rJHdgiA0LASRzdLINhTeU5zOoq1TCMgge4KOBWSagnM,3041
|
23
23
|
newsworthycharts/lib/mimetypes.py,sha256=bL9HtVWbn2Of39LcBt4u4yelkr4bGZiyebq3OfLnfFY,237
|
24
|
-
newsworthycharts/lib/utils.py,sha256=
|
24
|
+
newsworthycharts/lib/utils.py,sha256=l4SUVB-8lnm3XHqHNo5KgZuZNv_VaFnrH76hrZmDq1s,7231
|
25
25
|
newsworthycharts/maps/se-4.gpkg,sha256=oWw5j7FPVpI0ig67jNDim8qSn5SG8rcHp0014-uTKZM,290816
|
26
26
|
newsworthycharts/maps/se-7.gpkg,sha256=Vmvqudq_ZtgV0sd6TY6kuk7vzqmYZCJmaxtsJ87q2a8,331776
|
27
27
|
newsworthycharts/rc/newsworthy,sha256=vbYTav1w3DmB5tpaaV7Xl5q7TQJsc9eou6pLCoWc2vs,1589
|
28
28
|
newsworthycharts/translations/datawrapper_regions.csv,sha256=fzZcQRX6RFMlNNP8mpgfYNdR3Y0QAlQxDXk8FXTaWWI,9214
|
29
29
|
newsworthycharts/translations/regions.py,sha256=Nv1McQjggD4S3JRu82rDMTG3pqUVR13E5-FBpSYbm98,239
|
30
30
|
newsworthycharts/translations/se_municipalities.csv,sha256=br_mm-IvzQtj_W55_ATREhJ97jWnCweBFlDAVY2EBxA,7098
|
31
|
-
newsworthycharts-1.63.
|
32
|
-
newsworthycharts-1.63.
|
33
|
-
newsworthycharts-1.63.
|
34
|
-
newsworthycharts-1.63.
|
35
|
-
newsworthycharts-1.63.
|
31
|
+
newsworthycharts-1.63.3.dist-info/LICENSE.txt,sha256=Sq6kGICrehbhC_FolNdXf0djKjTpv3YqjFCIYsxdQN4,1069
|
32
|
+
newsworthycharts-1.63.3.dist-info/METADATA,sha256=lqj-Zs5zczMZRivCuochTp2DhjkLlOvzfQ7frn__8E4,29524
|
33
|
+
newsworthycharts-1.63.3.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
|
34
|
+
newsworthycharts-1.63.3.dist-info/top_level.txt,sha256=dn_kzIj8UgUCMsh1PHdVEQJHVGSsN7Z8YJF-8xXa8n0,17
|
35
|
+
newsworthycharts-1.63.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|