newsworthycharts 1.74.1__tar.gz → 1.75.0__tar.gz

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.
Files changed (52) hide show
  1. {newsworthycharts-1.74.1/newsworthycharts.egg-info → newsworthycharts-1.75.0}/PKG-INFO +13 -3
  2. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/README.rst +10 -0
  3. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/__init__.py +1 -1
  4. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/choroplethmap.py +11 -7
  5. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/map.py +1 -0
  6. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/serialchart.py +3 -0
  7. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0/newsworthycharts.egg-info}/PKG-INFO +13 -3
  8. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts.egg-info/requires.txt +1 -1
  9. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/setup.py +1 -1
  10. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/LICENSE.txt +0 -0
  11. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/MANIFEST.in +0 -0
  12. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/bubblemap.py +0 -0
  13. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/categoricalchart.py +0 -0
  14. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/chart.py +0 -0
  15. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/custom/__init__.py +0 -0
  16. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/custom/climate_cars.py +0 -0
  17. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/datawrapper.py +0 -0
  18. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/lib/__init__.py +0 -0
  19. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/lib/color_fn.py +0 -0
  20. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/lib/colors.py +0 -0
  21. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/lib/datalist.py +0 -0
  22. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/lib/formatter.py +0 -0
  23. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/lib/geography.py +0 -0
  24. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/lib/locator.py +0 -0
  25. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/lib/mimetypes.py +0 -0
  26. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/lib/utils.py +0 -0
  27. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/maps/se-4.gpkg +0 -0
  28. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/maps/se-7.gpkg +0 -0
  29. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/rangeplot.py +0 -0
  30. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/rankchart.py +0 -0
  31. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/rc/newsworthy +0 -0
  32. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/scatterplot.py +0 -0
  33. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/seasonalchart.py +0 -0
  34. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/storage.py +0 -0
  35. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/stripechart.py +0 -0
  36. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/translations/datawrapper_regions.csv +0 -0
  37. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/translations/regions.py +0 -0
  38. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts/translations/se_municipalities.csv +0 -0
  39. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts.egg-info/SOURCES.txt +0 -0
  40. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts.egg-info/dependency_links.txt +0 -0
  41. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts.egg-info/not-zip-safe +0 -0
  42. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/newsworthycharts.egg-info/top_level.txt +0 -0
  43. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/setup.cfg +0 -0
  44. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/test/test_categorical_chart.py +0 -0
  45. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/test/test_choropleth_maps.py +0 -0
  46. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/test/test_custom_climate_cars.py +0 -0
  47. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/test/test_data_list.py +0 -0
  48. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/test/test_datawrapper.py +0 -0
  49. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/test/test_main.py +0 -0
  50. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/test/test_rangeplot.py +0 -0
  51. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/test/test_scatterplot.py +0 -0
  52. {newsworthycharts-1.74.1 → newsworthycharts-1.75.0}/test/test_serial_chart.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: newsworthycharts
3
- Version: 1.74.1
3
+ Version: 1.75.0
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.74.1.tar.gz
6
+ Download-URL: https://github.com/jplusplus/newsworthycharts/archive/1.75.0.tar.gz
7
7
  Author: Jens Finnäs and Leo Wallentin, J++ Stockholm
8
8
  Author-email: stockholm@jplusplus.org
9
9
  License: MIT
@@ -21,7 +21,7 @@ Requires-Dist: python-dateutil<3,>=2
21
21
  Requires-Dist: Pillow==11.2.1
22
22
  Requires-Dist: requests>=2.22
23
23
  Requires-Dist: matplotlib-label-lines==0.5.1
24
- Requires-Dist: geopandas==1.0.1
24
+ Requires-Dist: geopandas==1.1.0
25
25
  Requires-Dist: mapclassify==2.8.1
26
26
  Dynamic: author
27
27
  Dynamic: author-email
@@ -225,6 +225,7 @@ These settings are available for all chart types:
225
225
  - `categorical` = False # If True, the map will be colored by category. If False, it will be colored by a continuous value
226
226
  - `base_map` = None
227
227
  - `missing_label` = None # Add a label for no data
228
+ - `missing_color` = "gainsboro" # Color for regions with no data
228
229
 
229
230
  `basemap` can be `{ISO}-{level}` or `{ISO}|{subset}-{level}`.
230
231
  For example, `se-4` will show Swedish counties, while `se|03-7` will show municipalities (`se-7`) starting with `03`.
@@ -285,6 +286,15 @@ Roadmap
285
286
  Changelog
286
287
  ---------
287
288
 
289
+ - 1.75.0
290
+
291
+ - geopandas==1.1.0
292
+ - Added `missing_color` argument to ChoroplethMap, to set the color of regions with no data
293
+
294
+ - 1.74.2
295
+
296
+ - Improved positioning of x-range annotations in SerialChart
297
+
288
298
  - 1.74.1
289
299
 
290
300
  - Wait for data to be added before calculating dynamic heights and responsive typography
@@ -188,6 +188,7 @@ These settings are available for all chart types:
188
188
  - `categorical` = False # If True, the map will be colored by category. If False, it will be colored by a continuous value
189
189
  - `base_map` = None
190
190
  - `missing_label` = None # Add a label for no data
191
+ - `missing_color` = "gainsboro" # Color for regions with no data
191
192
 
192
193
  `basemap` can be `{ISO}-{level}` or `{ISO}|{subset}-{level}`.
193
194
  For example, `se-4` will show Swedish counties, while `se|03-7` will show municipalities (`se-7`) starting with `03`.
@@ -248,6 +249,15 @@ Roadmap
248
249
  Changelog
249
250
  ---------
250
251
 
252
+ - 1.75.0
253
+
254
+ - geopandas==1.1.0
255
+ - Added `missing_color` argument to ChoroplethMap, to set the color of regions with no data
256
+
257
+ - 1.74.2
258
+
259
+ - Improved positioning of x-range annotations in SerialChart
260
+
251
261
  - 1.74.1
252
262
 
253
263
  - Wait for data to be added before calculating dynamic heights and responsive typography
@@ -1,4 +1,4 @@
1
- __version__ = "1.74.1"
1
+ __version__ = "1.75.0"
2
2
 
3
3
  from .chart import Chart
4
4
  from .choroplethmap import ChoroplethMap
@@ -33,6 +33,10 @@ class ChoroplethMap(Map):
33
33
 
34
34
  df = self._prepare_map_data()
35
35
 
36
+ missing_color = "gainsboro"
37
+ if self.missing_color:
38
+ missing_color = self.missing_color
39
+
36
40
  args = {
37
41
  "categorical": True,
38
42
  "legend": True, # bug in geopandas, fixed in master but not released
@@ -43,7 +47,7 @@ class ChoroplethMap(Map):
43
47
  "edgecolor": "white",
44
48
  "linewidth": 0.2,
45
49
  "missing_kwds": {
46
- "color": "gainsboro",
50
+ "color": missing_color,
47
51
  },
48
52
  }
49
53
  # This should be adjusted per basemap
@@ -58,8 +62,8 @@ class ChoroplethMap(Map):
58
62
  # normalize the data ourselves, otherwise the inset maps will be off
59
63
  norm = mpl.colors.Normalize(vmin=df["data"].min(), vmax=df["data"].max())
60
64
  mapper = mpl.cm.ScalarMappable(norm=norm, cmap=self.color_ramp)
61
- df["color"] = df["data"].apply(lambda x: mapper.to_rgba(x) if not np.isnan(x) else "gainsboro")
62
- df["color"] = df["color"].fillna("gainsboro")
65
+ df["color"] = df["data"].apply(lambda x: mapper.to_rgba(x) if not np.isnan(x) else missing_color)
66
+ df["color"] = df["color"].fillna(missing_color)
63
67
  args["color"] = df["color"]
64
68
 
65
69
  self._fig.tight_layout()
@@ -129,8 +133,8 @@ class ChoroplethMap(Map):
129
133
  # normalize the data ourselves, otherwise the inset maps will be off
130
134
  norm = mpl.colors.Normalize(vmin=_has_value["data"].min(), vmax=_has_value["data"].max())
131
135
  mapper = mpl.cm.ScalarMappable(norm=norm, cmap=self.color_ramp)
132
- df["color"] = df["data"].apply(lambda x: mapper.to_rgba(x) if not np.isnan(x) else "gainsboro")
133
- df["color"] = df["color"].fillna("gainsboro")
136
+ df["color"] = df["data"].apply(lambda x: mapper.to_rgba(x) if not np.isnan(x) else missing_color)
137
+ df["color"] = df["color"].fillna(missing_color)
134
138
  args["color"] = df["color"]
135
139
 
136
140
  # Add labels legend (manually, Geopandas is too crude as of now)
@@ -173,7 +177,7 @@ class ChoroplethMap(Map):
173
177
  for idx, cat in enumerate(cat):
174
178
  color_map[cat] = self._nwc_style["qualitative_colors"][idx]
175
179
  df["color"] = df["data"].astype(str).map(color_map)
176
- df["color"] = df["color"].fillna("gainsboro")
180
+ df["color"] = df["color"].fillna(missing_color)
177
181
  args["color"] = df["color"]
178
182
 
179
183
  # Geopandas does not handle legend if color keyword is used
@@ -195,7 +199,7 @@ class ChoroplethMap(Map):
195
199
  patches.append(patch)
196
200
  patches = list(reversed(patches))
197
201
  if self.missing_label and len(patches):
198
- patches.append(mpatches.Patch(color="gainsboro", label=self.missing_label))
202
+ patches.append(mpatches.Patch(color=missing_color, label=self.missing_label))
199
203
 
200
204
  df.plot(ax=self.ax, **args)
201
205
  # Add outer edge
@@ -94,6 +94,7 @@ class Map(Chart):
94
94
  self.categorical = kwargs.get("categorical", False)
95
95
  self.base_map = None
96
96
  self.missing_label = None
97
+ self.missing_color = None
97
98
  self.df = None
98
99
  self.show_ticks = False
99
100
 
@@ -539,7 +539,10 @@ class SerialChart(Chart):
539
539
  (x0, x1) = self.highlighted_x_ranges[idx]
540
540
  x0 = to_date(x0)
541
541
  x1 = to_date(x1)
542
+ # Put label betwen top value and axis limit
542
543
  _y = self.ymax or self.data.max_val + self.baseline
544
+ _y_top = self.ax.get_ylim()[1]
545
+ _y = _y_top - (_y_top - _y) / 2
543
546
  self.ax.text(
544
547
  x0 + (x1 - x0) / 2,
545
548
  _y,
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: newsworthycharts
3
- Version: 1.74.1
3
+ Version: 1.75.0
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.74.1.tar.gz
6
+ Download-URL: https://github.com/jplusplus/newsworthycharts/archive/1.75.0.tar.gz
7
7
  Author: Jens Finnäs and Leo Wallentin, J++ Stockholm
8
8
  Author-email: stockholm@jplusplus.org
9
9
  License: MIT
@@ -21,7 +21,7 @@ Requires-Dist: python-dateutil<3,>=2
21
21
  Requires-Dist: Pillow==11.2.1
22
22
  Requires-Dist: requests>=2.22
23
23
  Requires-Dist: matplotlib-label-lines==0.5.1
24
- Requires-Dist: geopandas==1.0.1
24
+ Requires-Dist: geopandas==1.1.0
25
25
  Requires-Dist: mapclassify==2.8.1
26
26
  Dynamic: author
27
27
  Dynamic: author-email
@@ -225,6 +225,7 @@ These settings are available for all chart types:
225
225
  - `categorical` = False # If True, the map will be colored by category. If False, it will be colored by a continuous value
226
226
  - `base_map` = None
227
227
  - `missing_label` = None # Add a label for no data
228
+ - `missing_color` = "gainsboro" # Color for regions with no data
228
229
 
229
230
  `basemap` can be `{ISO}-{level}` or `{ISO}|{subset}-{level}`.
230
231
  For example, `se-4` will show Swedish counties, while `se|03-7` will show municipalities (`se-7`) starting with `03`.
@@ -285,6 +286,15 @@ Roadmap
285
286
  Changelog
286
287
  ---------
287
288
 
289
+ - 1.75.0
290
+
291
+ - geopandas==1.1.0
292
+ - Added `missing_color` argument to ChoroplethMap, to set the color of regions with no data
293
+
294
+ - 1.74.2
295
+
296
+ - Improved positioning of x-range annotations in SerialChart
297
+
288
298
  - 1.74.1
289
299
 
290
300
  - Wait for data to be added before calculating dynamic heights and responsive typography
@@ -9,5 +9,5 @@ python-dateutil<3,>=2
9
9
  Pillow==11.2.1
10
10
  requests>=2.22
11
11
  matplotlib-label-lines==0.5.1
12
- geopandas==1.0.1
12
+ geopandas==1.1.0
13
13
  mapclassify==2.8.1
@@ -35,7 +35,7 @@ setup(
35
35
  "Pillow==11.2.1",
36
36
  "requests>=2.22",
37
37
  "matplotlib-label-lines==0.5.1",
38
- "geopandas==1.0.1",
38
+ "geopandas==1.1.0",
39
39
  "mapclassify==2.8.1",
40
40
  ],
41
41
  setup_requires=["flake8"],