newsworthycharts 1.61.1__py3-none-any.whl → 1.61.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.
@@ -1,4 +1,4 @@
1
- __version__ = "1.61.1"
1
+ __version__ = "1.61.3"
2
2
 
3
3
  from .chart import Chart
4
4
  from .choroplethmap import ChoroplethMap
newsworthycharts/chart.py CHANGED
@@ -716,7 +716,7 @@ class Chart(object):
716
716
  'Creator': f"NWCharts {__version__}",
717
717
  }
718
718
  """
719
- self._fig.savefig(buf, **args) #, bbox_inches="tight")
719
+ self._fig.savefig(buf, **args) # bbox_inches="tight")
720
720
  buf.seek(0)
721
721
  self._storage.save(key, buf, file_format, storage_options)
722
722
 
@@ -55,7 +55,7 @@ lines.markersize : 8
55
55
 
56
56
  #! neutral_color : 6f6e75
57
57
  #! strong_color : 00a39a
58
- #! qualitative_colors : 00a39a, DBAD58, A6426A, 93003a
58
+ #! qualitative_colors : 00a39a, DBAD58, A6426A, 93003a, C8C7D1
59
59
  #! positive_color : 00a39a
60
60
  #! negative_color : 93003a
61
61
 
@@ -194,6 +194,8 @@ class SerialChart(Chart):
194
194
  line_label_elems = []
195
195
  value_label_elems = []
196
196
 
197
+ bar_elems = []
198
+
197
199
  for i, serie in enumerate(series):
198
200
 
199
201
  values = np.array(serie_values[i], dtype=float)
@@ -340,7 +342,6 @@ class SerialChart(Chart):
340
342
  """
341
343
  bar_widths_ = [self._days_in(self.interval, d) for d in dates]
342
344
 
343
- # Put whitespace betw bars, unless there are a lot of bars
344
345
  bbox = self.ax.get_window_extent()
345
346
  if (sum(bar_widths_) * 2 / len(dates)) > bbox.width:
346
347
  bar_widths = bar_widths_
@@ -352,13 +353,13 @@ class SerialChart(Chart):
352
353
  width=bar_widths,
353
354
  zorder=zo,
354
355
  )
355
- if len(dates) < 100:
356
- # FIXME: This complements the bar_width hack above
357
- # For some charts edges give better results (n_bars ~50?)
358
- # This should be better tested, and implemented in a
359
- # more robust way
360
- bar_kwargs["edgecolor"] = "white"
361
- bar_kwargs["linewidth"] = 1
356
+ # if len(dates) < 100:
357
+ # # FIXME: This complements the bar_width hack above
358
+ # # For some charts edges give better results (n_bars ~50?)
359
+ # # This should be better tested, and implemented in a
360
+ # # more robust way
361
+ # bar_kwargs["edgecolor"] = "white"
362
+ # bar_kwargs["linewidth"] = 0 # 1
362
363
 
363
364
  if is_stacked and i > 0:
364
365
  if self.baseline != 0:
@@ -378,6 +379,7 @@ class SerialChart(Chart):
378
379
  bar_kwargs["bottom"] = self.baseline
379
380
 
380
381
  bars = self.ax.bar(dates, values, **bar_kwargs)
382
+ bar_elems.append(bars)
381
383
 
382
384
  if len(self.labels) > i:
383
385
  bars.set_label(self.labels[i])
@@ -438,7 +440,17 @@ class SerialChart(Chart):
438
440
  # Could happen if we have two or more lines,
439
441
  # with different start and end points.
440
442
  continue
441
- self._annotate_point(value_label, xy, direction=dir)
443
+ self._annotate_point(value_label, xy, direction=dir, zorder=15)
444
+
445
+ # Add some padding around bars, but only left/right to avoid lines in stacked bars
446
+ if len(dates) < 100:
447
+ for bars in bar_elems:
448
+ # for container in self.ax.containers:
449
+ for bar in bars:
450
+ x, y = bar.get_xy()
451
+ w, h = bar.get_width(), bar.get_height()
452
+ self.ax.plot([x + w, x + w], [y, y + h], color='white', lw=1, zorder=10)
453
+ self.ax.plot([x, x], [y, y + h], color='white', lw=1, zorder=10)
442
454
 
443
455
  # Add background highlights
444
456
  for (x0, x1) in self.highlighted_x_ranges:
@@ -600,9 +612,13 @@ class SerialChart(Chart):
600
612
  for i, date in enumerate(dates):
601
613
  xy = (date, values[i])
602
614
  dir = self._get_annotation_direction(i, values)
603
- self._annotate_point(a_formatter(values[i]), xy,
604
- color=trendline_color,
605
- direction=dir)
615
+ self._annotate_point(
616
+ a_formatter(values[i]),
617
+ xy,
618
+ color=trendline_color,
619
+ direction=dir,
620
+ zorder=15
621
+ )
606
622
 
607
623
  # x = [a.xy[0] for a in self._annotations]
608
624
  # y = [a.xy[1] for a in self._annotations]
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: newsworthycharts
3
- Version: 1.61.1
3
+ Version: 1.61.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.61.1.tar.gz
6
+ Download-URL: https://github.com/jplusplus/newsworthycharts/archive/1.61.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
@@ -150,6 +150,7 @@ These settings are available for all chart types:
150
150
  - decimals = None # None means automatically chose the best number
151
151
  - logo = None # Path to image that will be embedded in the caption area. Can also be set though a style property
152
152
  - color_fn = None # Custom coloring function
153
+ - legend_title = None # Title for the legend
153
154
 
154
155
  **SerialChart**
155
156
 
@@ -252,6 +253,15 @@ Roadmap
252
253
  Changelog
253
254
  ---------
254
255
 
256
+ - 1.61.3
257
+
258
+ - z-ordering fix in stacked bar charts
259
+ - added an extra categorical color to the newsworthy style
260
+
261
+ - 1.61.2
262
+
263
+ - Remove horizontal line between bars in stacked bar charts
264
+
255
265
  - 1.61.1
256
266
 
257
267
  - Improved handling of label_placement = "outside" in SerialChart
@@ -1,14 +1,14 @@
1
- newsworthycharts/__init__.py,sha256=UtUks101pRHa3vCOHg4UPZbyoH12L711yi8xRgqF1aY,1160
1
+ newsworthycharts/__init__.py,sha256=u6vihRaQbJ0Wpazujsxpq-IS7W6GSN6lFAXqOG7MkoI,1160
2
2
  newsworthycharts/bubblemap.py,sha256=nkocWmpiFgfjEuJGAsthjY5X7Q56jXWsZHUGXw4PwgE,2587
3
3
  newsworthycharts/categoricalchart.py,sha256=LwOZ3VbNy9vzvoK0s77AkbfMt4CXVDSAhnsnBInUIrE,14764
4
- newsworthycharts/chart.py,sha256=LYrcWNq2zQY90TB1b7e-5XPyBJ2nUGkzHqip1hGm5G0,30682
4
+ newsworthycharts/chart.py,sha256=bCUkNKjFfuGRN6_VRQ-yCHla5LIMZ9H9a16upWbeWmY,30681
5
5
  newsworthycharts/choroplethmap.py,sha256=bCLf4kcchp1C2djg5AxcOM8BdbaMj0xg7UHrZsDafhI,8013
6
6
  newsworthycharts/datawrapper.py,sha256=RRkAVTpfP4updKxUIBaSmKuBi2RUVPaBRF8HDQhlGGA,11250
7
7
  newsworthycharts/map.py,sha256=c409jEO4L8Yr780sJRC0RchR44roAlgOUDAkuk1SfRg,6057
8
8
  newsworthycharts/rangeplot.py,sha256=NE1W9TnmlpK6T3RvBJOU3nd73EXqkj17OY9i5zlw_cQ,8366
9
9
  newsworthycharts/scatterplot.py,sha256=6iaMoiZx__Gc-2Hcdw-8Ga5dSonrFo3oexKNmSFuir4,4959
10
10
  newsworthycharts/seasonalchart.py,sha256=rr55yqJUkaYDR9Ik98jes6574oY1U8t8LwoLE3gClW4,1967
11
- newsworthycharts/serialchart.py,sha256=ZgCaFhxwgrNEZZNB3QnrmcWdT9PnYMtORpb_jz4fzW8,26688
11
+ newsworthycharts/serialchart.py,sha256=FOILuBd_NP-YZNeJwCTz89hPCiO1mDBcJmTEaJVbsw8,27294
12
12
  newsworthycharts/storage.py,sha256=myERhlpvXyExXxUByBq9eW1bWkCyfH9SwTZbsWSyy3Q,4301
13
13
  newsworthycharts/stripechart.py,sha256=9B6PX2MyLuKNQ8W0OGdKbP0-U32kju0K_NHHwwz_J68,1547
14
14
  newsworthycharts/custom/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -24,12 +24,12 @@ newsworthycharts/lib/mimetypes.py,sha256=bL9HtVWbn2Of39LcBt4u4yelkr4bGZiyebq3OfL
24
24
  newsworthycharts/lib/utils.py,sha256=2Ko0dNFw2eHd32zQwJFUsgDkJGWSl6VacZs4AFPgrc8,7038
25
25
  newsworthycharts/maps/se-4.gpkg,sha256=oWw5j7FPVpI0ig67jNDim8qSn5SG8rcHp0014-uTKZM,290816
26
26
  newsworthycharts/maps/se-7.gpkg,sha256=Vmvqudq_ZtgV0sd6TY6kuk7vzqmYZCJmaxtsJ87q2a8,331776
27
- newsworthycharts/rc/newsworthy,sha256=X0btLNrmk2DRrfOsKj_WCSIgeD6btacEN2tRF_B4m8w,1581
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.61.1.dist-info/LICENSE.txt,sha256=Sq6kGICrehbhC_FolNdXf0djKjTpv3YqjFCIYsxdQN4,1069
32
- newsworthycharts-1.61.1.dist-info/METADATA,sha256=9aeZ4y_rdYwGMbukHpQ6y1LaIMuyh9zX7NRg7FGqV8I,28644
33
- newsworthycharts-1.61.1.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
34
- newsworthycharts-1.61.1.dist-info/top_level.txt,sha256=dn_kzIj8UgUCMsh1PHdVEQJHVGSsN7Z8YJF-8xXa8n0,17
35
- newsworthycharts-1.61.1.dist-info/RECORD,,
31
+ newsworthycharts-1.61.3.dist-info/LICENSE.txt,sha256=Sq6kGICrehbhC_FolNdXf0djKjTpv3YqjFCIYsxdQN4,1069
32
+ newsworthycharts-1.61.3.dist-info/METADATA,sha256=FH47AXXq2GHTmWEWqkZz_hiIwDCZIXUz-KB1E2nD4xE,28876
33
+ newsworthycharts-1.61.3.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
34
+ newsworthycharts-1.61.3.dist-info/top_level.txt,sha256=dn_kzIj8UgUCMsh1PHdVEQJHVGSsN7Z8YJF-8xXa8n0,17
35
+ newsworthycharts-1.61.3.dist-info/RECORD,,