newsworthycharts 1.71.4__tar.gz → 1.72.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.
- {newsworthycharts-1.71.4/newsworthycharts.egg-info → newsworthycharts-1.72.0}/PKG-INFO +19 -3
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/README.rst +16 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/__init__.py +1 -1
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/choroplethmap.py +31 -2
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/map.py +1 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/rankchart.py +85 -20
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/serialchart.py +5 -2
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0/newsworthycharts.egg-info}/PKG-INFO +19 -3
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts.egg-info/requires.txt +1 -1
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/setup.py +1 -1
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/LICENSE.txt +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/MANIFEST.in +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/bubblemap.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/categoricalchart.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/chart.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/custom/__init__.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/custom/climate_cars.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/datawrapper.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/lib/__init__.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/lib/color_fn.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/lib/colors.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/lib/datalist.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/lib/formatter.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/lib/geography.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/lib/locator.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/lib/mimetypes.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/lib/utils.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/maps/se-4.gpkg +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/maps/se-7.gpkg +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/rangeplot.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/rc/newsworthy +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/scatterplot.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/seasonalchart.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/storage.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/stripechart.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/translations/datawrapper_regions.csv +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/translations/regions.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/translations/se_municipalities.csv +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts.egg-info/SOURCES.txt +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts.egg-info/dependency_links.txt +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts.egg-info/not-zip-safe +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts.egg-info/top_level.txt +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/setup.cfg +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/test/test_categorical_chart.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/test/test_choropleth_maps.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/test/test_custom_climate_cars.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/test/test_data_list.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/test/test_datawrapper.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/test/test_main.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/test/test_rangeplot.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/test/test_scatterplot.py +0 -0
- {newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/test/test_serial_chart.py +0 -0
@@ -1,9 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: newsworthycharts
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.72.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.
|
6
|
+
Download-URL: https://github.com/jplusplus/newsworthycharts/archive/1.72.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
|
@@ -11,7 +11,7 @@ Requires-Python: >=3.9
|
|
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.
|
14
|
+
Requires-Dist: matplotlib==3.10.1
|
15
15
|
Requires-Dist: langcodes>=3.3
|
16
16
|
Requires-Dist: Babel<3,>=2.14.0
|
17
17
|
Requires-Dist: PyYAML>=3
|
@@ -179,6 +179,7 @@ _ Inherits from SerialChart _
|
|
179
179
|
|
180
180
|
_ Inherits from SerialChart _
|
181
181
|
|
182
|
+
- label_placement = "right" # [left|right|both|outside|legend]
|
182
183
|
- highlight = None # The label value to of a line to highlight
|
183
184
|
- line_marker = "o-" # Matplotlib line marker type.
|
184
185
|
- line_marker_size = 5 # Matplotlib line marker size
|
@@ -270,6 +271,21 @@ Roadmap
|
|
270
271
|
Changelog
|
271
272
|
---------
|
272
273
|
|
274
|
+
- 1.72.0
|
275
|
+
|
276
|
+
- Use gradient legend för continuous choropleth maps
|
277
|
+
- Don't add None value to legend if it is empty in ChoroplethMap
|
278
|
+
- Fixed zorder bug in SerialChart with baseline annotations and bars
|
279
|
+
- matplotlib==3.10.1
|
280
|
+
- Fixed a bug where choropleth maps would break on svery small numbers (by bypassing all axis formatting logic for maps).
|
281
|
+
This should also speed up rendering of maps somewhat.
|
282
|
+
|
283
|
+
- 1.71.5
|
284
|
+
|
285
|
+
- zorder fixes in BumpChart
|
286
|
+
- Add `label_placement` = [left|right|both|outside|legend] to BumpChart. Default is 'right'
|
287
|
+
- Use alternating shades of gray in BumpChart
|
288
|
+
|
273
289
|
- 1.71.4
|
274
290
|
|
275
291
|
- BumpChart: Use dual colors in line markers when rank is shared
|
@@ -153,6 +153,7 @@ _ Inherits from SerialChart _
|
|
153
153
|
|
154
154
|
_ Inherits from SerialChart _
|
155
155
|
|
156
|
+
- label_placement = "right" # [left|right|both|outside|legend]
|
156
157
|
- highlight = None # The label value to of a line to highlight
|
157
158
|
- line_marker = "o-" # Matplotlib line marker type.
|
158
159
|
- line_marker_size = 5 # Matplotlib line marker size
|
@@ -244,6 +245,21 @@ Roadmap
|
|
244
245
|
Changelog
|
245
246
|
---------
|
246
247
|
|
248
|
+
- 1.72.0
|
249
|
+
|
250
|
+
- Use gradient legend för continuous choropleth maps
|
251
|
+
- Don't add None value to legend if it is empty in ChoroplethMap
|
252
|
+
- Fixed zorder bug in SerialChart with baseline annotations and bars
|
253
|
+
- matplotlib==3.10.1
|
254
|
+
- Fixed a bug where choropleth maps would break on svery small numbers (by bypassing all axis formatting logic for maps).
|
255
|
+
This should also speed up rendering of maps somewhat.
|
256
|
+
|
257
|
+
- 1.71.5
|
258
|
+
|
259
|
+
- zorder fixes in BumpChart
|
260
|
+
- Add `label_placement` = [left|right|both|outside|legend] to BumpChart. Default is 'right'
|
261
|
+
- Use alternating shades of gray in BumpChart
|
262
|
+
|
247
263
|
- 1.71.4
|
248
264
|
|
249
265
|
- BumpChart: Use dual colors in line markers when rank is shared
|
@@ -8,6 +8,7 @@ import pandas as pd
|
|
8
8
|
import mapclassify
|
9
9
|
import matplotlib as mpl
|
10
10
|
import matplotlib.patches as mpatches
|
11
|
+
from mpl_toolkits.axes_grid1.inset_locator import inset_axes
|
11
12
|
|
12
13
|
|
13
14
|
class ChoroplethMap(Map):
|
@@ -61,6 +62,32 @@ class ChoroplethMap(Map):
|
|
61
62
|
df["color"] = df["color"].fillna("gainsboro")
|
62
63
|
args["color"] = df["color"]
|
63
64
|
|
65
|
+
self._fig.tight_layout()
|
66
|
+
fmt = self._get_value_axis_formatter()
|
67
|
+
cax = inset_axes(
|
68
|
+
self.ax,
|
69
|
+
width=0.1,
|
70
|
+
height=2, # 2 tum = 200 px vid 100 dpi
|
71
|
+
loc='upper right',
|
72
|
+
borderpad=0.1,
|
73
|
+
# formatter
|
74
|
+
)
|
75
|
+
cb = self._fig.colorbar(
|
76
|
+
mapper,
|
77
|
+
cax=cax,
|
78
|
+
format=mpl.ticker.FuncFormatter(fmt),
|
79
|
+
drawedges=False,
|
80
|
+
shrink=0.9,
|
81
|
+
# use_gridspec=False,
|
82
|
+
# pad=0.1,
|
83
|
+
)
|
84
|
+
# args["legend_kwds"]["pad"] = 0.15
|
85
|
+
# args["legend_kwds"]["location"] = "left"
|
86
|
+
|
87
|
+
if self.legend_title:
|
88
|
+
cb.set_label(self.legend_title)
|
89
|
+
self.legend_title = None
|
90
|
+
"""
|
64
91
|
_min = df["data"].min()
|
65
92
|
_max = df["data"].max()
|
66
93
|
_median = df["data"].median()
|
@@ -70,6 +97,7 @@ class ChoroplethMap(Map):
|
|
70
97
|
patches.append(mpatches.Patch(color=mapper.to_rgba(_median), label=fmt(_median)))
|
71
98
|
if _max != _min:
|
72
99
|
patches.append(mpatches.Patch(color=mapper.to_rgba(_max), label=fmt(_max)))
|
100
|
+
"""
|
73
101
|
|
74
102
|
elif not self.categorical:
|
75
103
|
# mapclassify doesn't work well with nan values,
|
@@ -99,7 +127,7 @@ class ChoroplethMap(Map):
|
|
99
127
|
# args["cmap"] = self.color_ramp
|
100
128
|
# We can not provide vmin/vmax to geopandas, so we need to
|
101
129
|
# normalize the data ourselves, otherwise the inset maps will be off
|
102
|
-
norm = mpl.colors.Normalize(vmin=
|
130
|
+
norm = mpl.colors.Normalize(vmin=_has_value["data"].min(), vmax=_has_value["data"].max())
|
103
131
|
mapper = mpl.cm.ScalarMappable(norm=norm, cmap=self.color_ramp)
|
104
132
|
df["color"] = df["data"].apply(lambda x: mapper.to_rgba(x) if not np.isnan(x) else "gainsboro")
|
105
133
|
df["color"] = df["color"].fillna("gainsboro")
|
@@ -155,7 +183,7 @@ class ChoroplethMap(Map):
|
|
155
183
|
patch = mpatches.Patch(color=color, label=label)
|
156
184
|
patches.append(patch)
|
157
185
|
patches = list(reversed(patches))
|
158
|
-
if self.missing_label:
|
186
|
+
if self.missing_label and len(patches):
|
159
187
|
patches.append(mpatches.Patch(color="gainsboro", label=self.missing_label))
|
160
188
|
|
161
189
|
df.plot(ax=self.ax, **args)
|
@@ -201,3 +229,4 @@ class ChoroplethMap(Map):
|
|
201
229
|
handles=patches,
|
202
230
|
**label_kwargs,
|
203
231
|
)
|
232
|
+
#self.ax.get_figure().savefig("TST.png", bbox_inches="tight")
|
@@ -15,13 +15,18 @@ class BumpChart(SerialChart):
|
|
15
15
|
"""
|
16
16
|
|
17
17
|
def __init__(self, *args, **kwargs):
|
18
|
+
label_placement = kwargs.get("label_placement", None)
|
19
|
+
if label_placement not in ["legend", "outside"]:
|
20
|
+
self.label_placement = "none"
|
21
|
+
|
18
22
|
super(BumpChart, self).__init__(*args, **kwargs)
|
19
23
|
|
20
24
|
if self.line_width is None:
|
21
25
|
self.line_width = 0.9
|
22
26
|
if self.line_marker_size is None:
|
23
27
|
self.line_marker_size = 6
|
24
|
-
|
28
|
+
if not label_placement:
|
29
|
+
self.label_placement = 'right'
|
25
30
|
self.type = "line"
|
26
31
|
self.decimals = 0
|
27
32
|
self.revert_value_axis = True
|
@@ -40,7 +45,11 @@ class BumpChart(SerialChart):
|
|
40
45
|
return self._nwc_style["strong_color"]
|
41
46
|
elif self.colors and i < len(self.colors):
|
42
47
|
return self.colors[i]
|
43
|
-
|
48
|
+
# alternate between dark gray and light gray
|
49
|
+
if i % 2 == 0:
|
50
|
+
return "darkgray"
|
51
|
+
else:
|
52
|
+
return "lightgray"
|
44
53
|
|
45
54
|
"""
|
46
55
|
def _get_marker_fill(self, i):
|
@@ -55,7 +64,6 @@ class BumpChart(SerialChart):
|
|
55
64
|
|
56
65
|
# Recolor markers with more than one line passing through
|
57
66
|
# (MPL does not allow access to individual markers, so we'll overwrite them)
|
58
|
-
|
59
67
|
for date in self.data.x_points:
|
60
68
|
value_colors = {}
|
61
69
|
for i, serie in enumerate(self.data):
|
@@ -98,7 +106,10 @@ class BumpChart(SerialChart):
|
|
98
106
|
zorder=100,
|
99
107
|
)
|
100
108
|
# Add labels
|
101
|
-
|
109
|
+
slots_occupied_right = {
|
110
|
+
to_date(k): [] for k in self.data.x_points
|
111
|
+
}
|
112
|
+
slots_occupied_left = {
|
102
113
|
to_date(k): [] for k in self.data.x_points
|
103
114
|
}
|
104
115
|
# distance between rank ticks
|
@@ -114,23 +125,77 @@ class BumpChart(SerialChart):
|
|
114
125
|
(d, values[idx])
|
115
126
|
for (idx, d) in enumerate(dates) if idx == len(dates) - 1 or np.isnan(values[idx + 1])
|
116
127
|
]
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
128
|
+
|
129
|
+
startpoints = []
|
130
|
+
if self.label_placement == "both":
|
131
|
+
startpoints = [
|
132
|
+
(d, values[idx])
|
133
|
+
for (idx, d) in enumerate(dates)
|
134
|
+
if (idx == 0 or np.isnan(values[idx - 1]) # only if 2 consecutive values come after
|
135
|
+
and (idx < len(dates) - 2)
|
136
|
+
and not np.isnan(values[idx + 1])
|
137
|
+
and not np.isnan(values[idx + 2]))
|
138
|
+
]
|
139
|
+
elif self.label_placement == "left":
|
140
|
+
startpoints = [
|
141
|
+
(d, values[idx])
|
142
|
+
for (idx, d) in enumerate(dates)
|
143
|
+
if idx == 0 or np.isnan(values[idx - 1])
|
144
|
+
]
|
145
|
+
|
146
|
+
if self.label_placement in ["left", "both"]:
|
147
|
+
# We need to move y spine to the left to make room for labels
|
148
|
+
# To save time we'll only measure the with of the longest text string
|
149
|
+
# There will be edge cases where shorter strings taker up more space
|
150
|
+
longest_sp_label = max([len(str(x[1])) for x in startpoints])
|
151
|
+
dummy_text = self.ax.text(
|
152
|
+
0, 0,
|
153
|
+
longest_sp_label,
|
154
|
+
fontsize=self._nwc_style["annotation.fontsize"]
|
155
|
+
)
|
156
|
+
_bbox = dummy_text.get_window_extent(renderer=self._fig.canvas.get_renderer())
|
157
|
+
self.ax.spines['left'].set_position(
|
158
|
+
('outward', _bbox.width * 1.15 + 15)
|
133
159
|
)
|
160
|
+
dummy_text.remove()
|
161
|
+
|
162
|
+
if self.label_placement in ["right", "both"]:
|
163
|
+
for ep in endpoints:
|
164
|
+
position = ep[1]
|
165
|
+
while position in slots_occupied_right[ep[0]]:
|
166
|
+
position += 1
|
167
|
+
# pos_diff = position - ep[1]
|
168
|
+
slots_occupied_right[ep[0]].append(position)
|
169
|
+
self._annotate_point(
|
170
|
+
self.labels[i],
|
171
|
+
# (ep[0], ep[1]),
|
172
|
+
(ep[0], position),
|
173
|
+
"right",
|
174
|
+
offset=15,
|
175
|
+
color=color,
|
176
|
+
va="center",
|
177
|
+
# xytext=(15, -abs(y1[1] - y2[1]) * pos_diff),
|
178
|
+
# arrowprops=dict(arrowstyle="->", color=color) if pos_diff > 1 else None,
|
179
|
+
zorder=99,
|
180
|
+
)
|
181
|
+
if self.label_placement in ["left", "both"]:
|
182
|
+
for sp in startpoints:
|
183
|
+
position = sp[1]
|
184
|
+
while position in slots_occupied_left[sp[0]]:
|
185
|
+
position += 1
|
186
|
+
# pos_diff = position - sp[1]
|
187
|
+
slots_occupied_left[sp[0]].append(position)
|
188
|
+
self._annotate_point(
|
189
|
+
self.labels[i],
|
190
|
+
(sp[0], position),
|
191
|
+
"left",
|
192
|
+
offset=15,
|
193
|
+
color=color,
|
194
|
+
va="center",
|
195
|
+
zorder=99,
|
196
|
+
)
|
197
|
+
# Add space for labels on the left
|
198
|
+
|
134
199
|
"""
|
135
200
|
labels = []
|
136
201
|
for i, serie in enumerate(self.data):
|
@@ -52,7 +52,9 @@ class SerialChart(Chart):
|
|
52
52
|
self.colors = None
|
53
53
|
|
54
54
|
# Optional: where to place series label
|
55
|
-
|
55
|
+
# Could be set already by subclass
|
56
|
+
if not hasattr(self, "label_placement"):
|
57
|
+
self.label_placement = "legend" # legend|inline|outside|line
|
56
58
|
|
57
59
|
# Optional: annotate each point with a value label
|
58
60
|
self.value_labels = False
|
@@ -518,7 +520,7 @@ class SerialChart(Chart):
|
|
518
520
|
linewidth=1,
|
519
521
|
color="#444444",
|
520
522
|
zorder=11,
|
521
|
-
linestyle="--" if self.baseline else "-"
|
523
|
+
linestyle="--" if self.baseline else "-",
|
522
524
|
)
|
523
525
|
if self.baseline_annotation:
|
524
526
|
xy = (to_date(self.data.outer_min_x), self.baseline)
|
@@ -529,6 +531,7 @@ class SerialChart(Chart):
|
|
529
531
|
xy,
|
530
532
|
direction="down" if first_val and first_val >= self.baseline else "up",
|
531
533
|
color=self._nwc_style["neutral_color"],
|
534
|
+
zorder=11,
|
532
535
|
)
|
533
536
|
|
534
537
|
# Shade area between lines if there are exactly 2 series
|
@@ -1,9 +1,9 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: newsworthycharts
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.72.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.
|
6
|
+
Download-URL: https://github.com/jplusplus/newsworthycharts/archive/1.72.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
|
@@ -11,7 +11,7 @@ Requires-Python: >=3.9
|
|
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.
|
14
|
+
Requires-Dist: matplotlib==3.10.1
|
15
15
|
Requires-Dist: langcodes>=3.3
|
16
16
|
Requires-Dist: Babel<3,>=2.14.0
|
17
17
|
Requires-Dist: PyYAML>=3
|
@@ -179,6 +179,7 @@ _ Inherits from SerialChart _
|
|
179
179
|
|
180
180
|
_ Inherits from SerialChart _
|
181
181
|
|
182
|
+
- label_placement = "right" # [left|right|both|outside|legend]
|
182
183
|
- highlight = None # The label value to of a line to highlight
|
183
184
|
- line_marker = "o-" # Matplotlib line marker type.
|
184
185
|
- line_marker_size = 5 # Matplotlib line marker size
|
@@ -270,6 +271,21 @@ Roadmap
|
|
270
271
|
Changelog
|
271
272
|
---------
|
272
273
|
|
274
|
+
- 1.72.0
|
275
|
+
|
276
|
+
- Use gradient legend för continuous choropleth maps
|
277
|
+
- Don't add None value to legend if it is empty in ChoroplethMap
|
278
|
+
- Fixed zorder bug in SerialChart with baseline annotations and bars
|
279
|
+
- matplotlib==3.10.1
|
280
|
+
- Fixed a bug where choropleth maps would break on svery small numbers (by bypassing all axis formatting logic for maps).
|
281
|
+
This should also speed up rendering of maps somewhat.
|
282
|
+
|
283
|
+
- 1.71.5
|
284
|
+
|
285
|
+
- zorder fixes in BumpChart
|
286
|
+
- Add `label_placement` = [left|right|both|outside|legend] to BumpChart. Default is 'right'
|
287
|
+
- Use alternating shades of gray in BumpChart
|
288
|
+
|
273
289
|
- 1.71.4
|
274
290
|
|
275
291
|
- BumpChart: Use dual colors in line markers when rank is shared
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts/translations/regions.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{newsworthycharts-1.71.4 → newsworthycharts-1.72.0}/newsworthycharts.egg-info/dependency_links.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|