newsworthycharts 1.76.0__py3-none-any.whl → 1.76.2__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.
@@ -1,4 +1,4 @@
1
- __version__ = "1.76.0"
1
+ __version__ = "1.76.2"
2
2
 
3
3
  from .chart import Chart
4
4
  from .choroplethmap import ChoroplethMap
newsworthycharts/chart.py CHANGED
@@ -18,7 +18,7 @@ from matplotlib.font_manager import FontProperties
18
18
  from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
19
19
  from matplotlib.figure import Figure
20
20
  from matplotlib.ticker import FuncFormatter
21
- from matplotlib.dates import DateFormatter, num2date, YearLocator
21
+ from matplotlib.dates import DateFormatter, num2date, date2num, YearLocator
22
22
 
23
23
  from langcodes import standardize_tag
24
24
  from PIL import Image
@@ -420,17 +420,36 @@ class Chart(object):
420
420
 
421
421
  else:
422
422
  loc = get_best_locator(delta, len(dates), self.interval, max_ticks=self.max_ticks)
423
+ print(loc)
423
424
  self.ax.xaxis.set_major_locator(loc)
424
425
  formatter = Formatter(self._language)
425
426
 
427
+ if self.interval == "weekly" and delta.days > 90:
428
+ # custom locator _and_ ticks: Put month label on start of each new month
429
+ # only the first occurance of each month
430
+ _loc_ticks = [
431
+ date2num(to_date(x)) for (i, x) in enumerate(self.data.x_points)
432
+ if i == 0 or x[5:7] != self.data.x_points[i - 1][5:7]
433
+ ]
434
+ import matplotlib.ticker as ticker
435
+ loc = ticker.FixedLocator(_loc_ticks)
436
+ self.ax.xaxis.set_major_locator(loc)
437
+
438
+ def fmt(x, pos):
439
+ d = num2date(x).isoformat()[:10]
440
+ if pos and self.data.x_points[pos - 1][0:4] != self.data.x_points[pos][0:4]:
441
+ return formatter.date(d, "MMM y")
442
+ else:
443
+ return formatter.date(d, "MMM")
426
444
  # if isinstance(loc, WeekdayLocator):
427
- if self.interval == "weekly":
445
+ elif self.interval == "weekly":
428
446
  # We consider dates to be more informative than week numbers
429
447
  def fmt(x, pos):
448
+ d = num2date(x).isoformat()[:10]
430
449
  if pos > len(self.data.x_points):
431
450
  return None
432
451
  try:
433
- return formatter.date(self.data.x_points[pos], "d MMM")
452
+ return formatter.date(d, "d MMM")
434
453
  except IndexError:
435
454
  return None
436
455
  # fmt = DateFormatter('%-d %b')
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: newsworthycharts
3
- Version: 1.76.0
3
+ Version: 1.76.2
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.76.0.tar.gz
6
+ Download-URL: https://github.com/jplusplus/newsworthycharts/archive/1.76.2.tar.gz
7
7
  Author: Jens Finnäs and Leo Wallentin, J++ Stockholm
8
8
  Author-email: stockholm@jplusplus.org
9
9
  License: MIT
@@ -11,7 +11,7 @@ Requires-Python: >=3.10
11
11
  Description-Content-Type: text/x-rst
12
12
  License-File: LICENSE.txt
13
13
  Requires-Dist: boto3>=1.26
14
- Requires-Dist: matplotlib==3.10.3
14
+ Requires-Dist: matplotlib==3.10.6
15
15
  Requires-Dist: langcodes>=3.3
16
16
  Requires-Dist: Babel<3,>=2.14.0
17
17
  Requires-Dist: PyYAML>=3
@@ -287,6 +287,15 @@ Roadmap
287
287
  Changelog
288
288
  ---------
289
289
 
290
+ - 1.76.2
291
+
292
+ - Use custom locator for crowded weekly data
293
+ - matplotlib==3.10.6
294
+
295
+ - 1.76.1
296
+
297
+ - Fixed a bug where x axis labels would sometimes get mixed up in long weekly data series
298
+
290
299
  - 1.76.0
291
300
 
292
301
  - Pillow==11.3.0
@@ -1,7 +1,7 @@
1
- newsworthycharts/__init__.py,sha256=1Ot5ucxJ17wa-7yxakr0e-G-xpRHzFVw7mVYbMb8-18,1221
1
+ newsworthycharts/__init__.py,sha256=xLQdIOkQXmWVDGTLvbSD9--qBkoCucP41TOweTP5Pys,1221
2
2
  newsworthycharts/bubblemap.py,sha256=nkocWmpiFgfjEuJGAsthjY5X7Q56jXWsZHUGXw4PwgE,2587
3
3
  newsworthycharts/categoricalchart.py,sha256=Vr-0yFms0hEVCeUa3vLt3FYBqpX4xLQ8YGPc4LGQN_A,18368
4
- newsworthycharts/chart.py,sha256=QDvIo_HV9fDmadBKLsPJMXrIYL6ZbHnDbVjZuzX9Srw,35441
4
+ newsworthycharts/chart.py,sha256=yNGqPk8fWijIQ9EpYg3ANfi7pNldrN3RyjaP3NxF0yU,36405
5
5
  newsworthycharts/choroplethmap.py,sha256=3ztB8C0Pm9yUvPucnsRgmdPmnlCxvkiB42JuSOJmWSk,9834
6
6
  newsworthycharts/datawrapper.py,sha256=RRkAVTpfP4updKxUIBaSmKuBi2RUVPaBRF8HDQhlGGA,11250
7
7
  newsworthycharts/map.py,sha256=tECE7bZhJnvJxFV2pSitDxaHrKOwjBjoSA15H-MdzeI,6123
@@ -29,8 +29,8 @@ newsworthycharts/rc/newsworthy,sha256=yOIZvYS6PG1u19VMcdtfj9vbihKQsey5IprwqK59Kg
29
29
  newsworthycharts/translations/datawrapper_regions.csv,sha256=fzZcQRX6RFMlNNP8mpgfYNdR3Y0QAlQxDXk8FXTaWWI,9214
30
30
  newsworthycharts/translations/regions.py,sha256=Nv1McQjggD4S3JRu82rDMTG3pqUVR13E5-FBpSYbm98,239
31
31
  newsworthycharts/translations/se_municipalities.csv,sha256=br_mm-IvzQtj_W55_ATREhJ97jWnCweBFlDAVY2EBxA,7098
32
- newsworthycharts-1.76.0.dist-info/licenses/LICENSE.txt,sha256=Sq6kGICrehbhC_FolNdXf0djKjTpv3YqjFCIYsxdQN4,1069
33
- newsworthycharts-1.76.0.dist-info/METADATA,sha256=Cl5xD_75FXkccbJ5s_2rVX-KmC1gqlnhpIChH70q6h4,35699
34
- newsworthycharts-1.76.0.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
35
- newsworthycharts-1.76.0.dist-info/top_level.txt,sha256=dn_kzIj8UgUCMsh1PHdVEQJHVGSsN7Z8YJF-8xXa8n0,17
36
- newsworthycharts-1.76.0.dist-info/RECORD,,
32
+ newsworthycharts-1.76.2.dist-info/licenses/LICENSE.txt,sha256=Sq6kGICrehbhC_FolNdXf0djKjTpv3YqjFCIYsxdQN4,1069
33
+ newsworthycharts-1.76.2.dist-info/METADATA,sha256=5UazmLqY83MHFvSj3ruF7TmMyYsSNLR1w1Dic4w0z2o,35883
34
+ newsworthycharts-1.76.2.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
35
+ newsworthycharts-1.76.2.dist-info/top_level.txt,sha256=dn_kzIj8UgUCMsh1PHdVEQJHVGSsN7Z8YJF-8xXa8n0,17
36
+ newsworthycharts-1.76.2.dist-info/RECORD,,