rsplotlib 0.3.5__cp39-cp39-win_amd64.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.
Binary file
rsplotlib/text.py ADDED
@@ -0,0 +1,18 @@
1
+ class Text:
2
+ def __init__(self, x=0, y=0, text='', **kwargs):
3
+ self.x = x
4
+ self.y = y
5
+ self.text = text
6
+ self.rotation = kwargs.get('rotation', 0)
7
+ self.fontsize = kwargs.get('fontsize', kwargs.get('size', None))
8
+ self.color = kwargs.get('color', kwargs.get('c', None))
9
+ self.label = kwargs.get('label', None)
10
+ self.horizontalalignment = kwargs.get('horizontalalignment', 'center')
11
+ self.verticalalignment = kwargs.get('verticalalignment', 'center')
12
+ self._rendered = False
13
+
14
+ def set_position(self, pos):
15
+ self.x, self.y = pos
16
+
17
+ def set_rotation(self, rotation):
18
+ self.rotation = rotation
rsplotlib/ticker.py ADDED
@@ -0,0 +1,6 @@
1
+ """rsplotlib.ticker - 向后兼容的导入模块
2
+
3
+ 此模块提供从旧路径 `rsplotlib.ticker` 导入的支持。
4
+ 实际实现在 `rsplotlib.ticks.ticker` 中。
5
+ """
6
+ from .ticks.ticker import * # noqa: F403, F401
@@ -0,0 +1,2 @@
1
+ """rsplotlib.ticks - 刻度管理"""
2
+ from . import ticker # noqa: F401
@@ -0,0 +1,269 @@
1
+ """rsplotlib.ticker - Matplotlib ticker 兼容接口
2
+
3
+ 提供刻度定位器和格式化器类。
4
+ 底层实现已迁移至 Rust 层,此模块为保持完整 Python 接口的薄包装层。
5
+ """
6
+
7
+ from .. import rsplotlib as _rs
8
+
9
+
10
+ class Tick:
11
+ """刻度对象"""
12
+
13
+ def __init__(self, loc, label=''):
14
+ self.loc = loc
15
+ self.label = label
16
+
17
+
18
+ # ==================== 定位器 ====================
19
+
20
+ class Locator:
21
+ """刻度定位器基类"""
22
+
23
+ def tick_values(self, vmin, vmax):
24
+ raise NotImplementedError
25
+
26
+ def __call__(self):
27
+ return []
28
+
29
+
30
+ class MultipleLocator(Locator):
31
+ """倍数定位器 - 刻度位置是基数的整数倍
32
+
33
+ 底层实现: Rust MultipleLocator
34
+
35
+ Args:
36
+ base: 刻度间距
37
+ """
38
+
39
+ def __init__(self, base=1.0):
40
+ self.base = base
41
+ self._impl = _rs.MultipleLocator(base)
42
+
43
+ def tick_values(self, vmin, vmax):
44
+ return self._impl.tick_values(vmin, vmax)
45
+
46
+ def __repr__(self):
47
+ return f'MultipleLocator(base={self.base})'
48
+
49
+
50
+ class MaxNLocator(Locator):
51
+ """最大数量定位器 - 最多 nbins+1 个刻度
52
+
53
+ 底层实现: Rust MaxNLocator
54
+
55
+ Args:
56
+ nbins: 最大区间数 (默认: 10)
57
+ integer: 是否只使用整数 (默认: False)
58
+ """
59
+
60
+ def __init__(self, nbins=10, integer=False):
61
+ self.nbins = nbins
62
+ self.integer = integer
63
+ self._impl = _rs.MaxNLocator(nbins, integer)
64
+
65
+ def tick_values(self, vmin, vmax):
66
+ return self._impl.tick_values(vmin, vmax)
67
+
68
+ def __repr__(self):
69
+ return f'MaxNLocator(nbins={self.nbins}, integer={self.integer})'
70
+
71
+
72
+ class AutoLocator(MaxNLocator):
73
+ """自动定位器
74
+
75
+ 底层实现: Rust MaxNLocator(nbins=10)
76
+ """
77
+
78
+ def __init__(self):
79
+ super().__init__(nbins=10)
80
+
81
+
82
+ class AutoMinorLocator(Locator):
83
+ """自动次要刻度定位器
84
+
85
+ 底层实现: Rust AutoMinorLocator
86
+
87
+ Args:
88
+ n: 每个主要间隔中的次要刻度数 (默认: 5)
89
+ """
90
+
91
+ def __init__(self, n=5):
92
+ self.n = n
93
+ self._impl = _rs.AutoMinorLocator(n)
94
+
95
+ def tick_values(self, vmin, vmax):
96
+ return self._impl.tick_values(vmin, vmax)
97
+
98
+ def __repr__(self):
99
+ return f'AutoMinorLocator(n={self.n})'
100
+
101
+
102
+ class FixedLocator(Locator):
103
+ """固定位置定位器
104
+
105
+ 底层实现: Rust FixedLocator
106
+ """
107
+
108
+ def __init__(self, locs):
109
+ self.locs = list(locs)
110
+ self._impl = _rs.FixedLocator(list(locs))
111
+
112
+ def tick_values(self, vmin, vmax):
113
+ return self._impl.tick_values(vmin, vmax)
114
+
115
+
116
+ class LinearLocator(Locator):
117
+ """线性定位器
118
+
119
+ 底层实现: Rust LinearLocator
120
+ """
121
+
122
+ def __init__(self, numticks=10):
123
+ self.numticks = numticks
124
+ self._impl = _rs.LinearLocator(numticks)
125
+
126
+ def tick_values(self, vmin, vmax):
127
+ return self._impl.tick_values(vmin, vmax)
128
+
129
+
130
+ class LogLocator(Locator):
131
+ """对数定位器
132
+
133
+ 底层实现: Rust LogLocator
134
+ """
135
+
136
+ def __init__(self, base=10.0, numticks=10):
137
+ self.base = base
138
+ self.numticks = numticks
139
+ self._impl = _rs.LogLocator(base, numticks)
140
+
141
+ def tick_values(self, vmin, vmax):
142
+ return self._impl.tick_values(vmin, vmax)
143
+
144
+
145
+ class NullLocator(Locator):
146
+ """空定位器 - 不显示刻度
147
+
148
+ 底层实现: Rust NullLocator
149
+ """
150
+
151
+ def __init__(self):
152
+ self._impl = _rs.NullLocator()
153
+
154
+ def tick_values(self, vmin, vmax):
155
+ return self._impl.tick_values(vmin, vmax)
156
+
157
+
158
+ # ==================== 格式化器 ====================
159
+
160
+ class Formatter:
161
+ """刻度格式化器基类"""
162
+
163
+ def format_ticks(self, values):
164
+ return [self(val) for val in values]
165
+
166
+ def __call__(self, value):
167
+ return str(value)
168
+
169
+
170
+ class NullFormatter(Formatter):
171
+ """不显示标签
172
+
173
+ 底层实现: Rust NullFormatter
174
+ """
175
+
176
+ def __init__(self):
177
+ self._impl = _rs.NullFormatter()
178
+
179
+ def __call__(self, value):
180
+ return self._impl.__call__(value)
181
+
182
+
183
+ class FixedFormatter(Formatter):
184
+ """固定标签格式化器
185
+
186
+ 底层实现: Rust FixedFormatter
187
+ """
188
+
189
+ def __init__(self, seq):
190
+ self.seq = list(seq)
191
+ self._impl = _rs.FixedFormatter([str(s) for s in seq])
192
+
193
+ def __call__(self, value):
194
+ return self._impl.__call__(value)
195
+
196
+
197
+ class FormatStrFormatter(Formatter):
198
+ """格式化字符串
199
+
200
+ 底层实现: Rust FormatStrFormatter
201
+ """
202
+
203
+ def __init__(self, fmt):
204
+ self.fmt = fmt
205
+ self._impl = _rs.FormatStrFormatter(fmt)
206
+
207
+ def __call__(self, value):
208
+ return self._impl.__call__(value)
209
+
210
+
211
+ class ScalarFormatter(Formatter):
212
+ """标量格式化器
213
+
214
+ 底层实现: Rust ScalarFormatter
215
+ """
216
+
217
+ def __init__(self):
218
+ self._impl = _rs.ScalarFormatter()
219
+
220
+ def __call__(self, value):
221
+ return self._impl.__call__(value)
222
+
223
+
224
+ class LogFormatterSciNotation(Formatter):
225
+ """科学计数法格式化器
226
+
227
+ 底层实现: Rust LogFormatterSciNotation
228
+ """
229
+
230
+ def __init__(self):
231
+ self._impl = _rs.LogFormatterSciNotation()
232
+
233
+ def __call__(self, value):
234
+ return self._impl.__call__(value)
235
+
236
+
237
+ class FuncFormatter(Formatter):
238
+ """函数格式化器
239
+
240
+ 底层实现: Rust FuncFormatter
241
+ """
242
+
243
+ def __init__(self, func):
244
+ self.func = func
245
+ self._impl = _rs.FuncFormatter(func)
246
+
247
+ def __call__(self, value):
248
+ return self._impl.__call__(value)
249
+
250
+
251
+ class StrMethodFormatter(Formatter):
252
+ """字符串方法格式化器
253
+
254
+ 底层实现: Rust StrMethodFormatter
255
+ """
256
+
257
+ def __init__(self, fmt):
258
+ self.fmt = fmt
259
+ self._impl = _rs.StrMethodFormatter(fmt)
260
+
261
+ def __call__(self, value):
262
+ return self._impl.__call__(value)
263
+
264
+
265
+ # ==================== 便捷函数 ====================
266
+
267
+ def auto_locator():
268
+ """创建自动定位器"""
269
+ return MaxNLocator(nbins=10, integer=False)
@@ -0,0 +1,2 @@
1
+ """rsplotlib.utils - 工具模块"""
2
+ from . import _font_resolver, _rcparams, style # noqa: F401
@@ -0,0 +1,34 @@
1
+ """rsplotlib._font_resolver - 字体族名 → 字体文件路径解析
2
+
3
+ 将 matplotlib 风格的无衬线字体族名(如 "Arial Unicode MS"、"Helvetica Neue")
4
+ 映射到本地字体文件路径。找不到时返回 None,由调用方决定回退到默认字体。
5
+
6
+ 底层实现: Rust font_resolver
7
+ """
8
+
9
+ from .. import rsplotlib as _rs
10
+
11
+
12
+ def resolve_font_path(family: str) -> str or None:
13
+ """根据字体族名查找本地的字体文件路径。
14
+
15
+ 底层实现: Rust resolve_font_path
16
+
17
+ Args:
18
+ family: 字体族名
19
+
20
+ Returns:
21
+ 字体文件路径,找不到时返回 None
22
+ """
23
+ return _rs.resolve_font_path(family)
24
+
25
+
26
+ def apply_rcparams_font() -> str or None:
27
+ """读取 rcParams["font.sans-serif"],把第一个能解析到本地文件的字体注册到 plotters。
28
+
29
+ 底层实现: Rust apply_rcparams_font
30
+
31
+ Returns:
32
+ 实际注册的字体文件路径,如果没找到任何字体则返回 None
33
+ """
34
+ return _rs.apply_rcparams_font()
@@ -0,0 +1,103 @@
1
+ """rsplotlib._rcparams - Matplotlib 兼容的 rcParams 配置管理
2
+
3
+ 提供类似 matplotlib.rcParams 的全局配置字典,保存绘图相关的默认参数。
4
+
5
+ **字体钩子**:当用户设置 `rcParams["font.sans-serif"]` 时,会自动调用
6
+ Rust 的字体解析器 `apply_rcparams_font()`,把对应的字体文件注册到 plotters 的
7
+ 字体数据库中,从而真正影响文本渲染(而不是像普通 dict 一样只更新值)。
8
+ """
9
+
10
+ # 默认配置:与 matplotlib 保持一致的常用项
11
+ _DEFAULT_RC = {
12
+ # 跨平台无衬线字体回退链:macOS/Windows 优先 Helvetica/Arial,其后回退到
13
+ # DejaVu Sans / Liberation Sans(Linux 常见字体,也是 matplotlib 的默认字体)。
14
+ # 这些名字按家族名从系统字体索引解析,不依赖具体安装路径,因此在没有
15
+ # Helvetica/Arial 的 Linux 上也能解析到真实字体,避免渲染时回退到无法解析的 "sans-serif"。
16
+ 'font.sans-serif': ['Helvetica', 'Arial', 'DejaVu Sans', 'Liberation Sans', 'sans-serif'],
17
+ 'axes.unicode_minus': True,
18
+ 'font.size': 10,
19
+ 'figure.figsize': [6.4, 4.8],
20
+ 'figure.dpi': 100.0,
21
+ }
22
+
23
+
24
+ class RcParams(dict):
25
+ """与 matplotlib.rcParams 兼容的配置字典
26
+
27
+ 区别于普通 dict:
28
+ 1. 当访问不存在的键时返回 None 而不是抛出 KeyError。
29
+ 2. **设置 `font.sans-serif` 时自动调用字体解析器**,把对应字体文件
30
+ 注册到 plotters 的字体数据库中,使 plotters 真正使用用户指定的字体
31
+ 渲染文字(而不是只更新一个不会生效的字符串列表)。
32
+ """
33
+
34
+ def __init__(self, *args, **kwargs):
35
+ super().__init__(*args, **kwargs)
36
+ self.update(_DEFAULT_RC)
37
+
38
+ def __getitem__(self, key):
39
+ try:
40
+ return super().__getitem__(key)
41
+ except KeyError:
42
+ return None
43
+
44
+ def __setitem__(self, key: str, value) -> None:
45
+ super().__setitem__(key, value)
46
+ self._trigger_font_hook(key)
47
+
48
+ def update(self, *args, **kwargs):
49
+ super().update(*args, **kwargs)
50
+ # update 也需要触发字体钩子,否则初始化时默认字体不会被注册
51
+ if args:
52
+ other = args[0]
53
+ if isinstance(other, dict):
54
+ keys = other.keys()
55
+ else:
56
+ keys = [k for k, _ in other]
57
+ else:
58
+ keys = kwargs.keys()
59
+ if 'font.sans-serif' in keys:
60
+ self._trigger_font_hook('font.sans-serif')
61
+
62
+ def _trigger_font_hook(self, key: str) -> None:
63
+ # 字体钩子:用户在 Python 端改字体时同步通知字体注册
64
+ if key == 'font.sans-serif':
65
+ try:
66
+ # 延迟导入避免循环依赖
67
+ from .. import rsplotlib as _rs
68
+ from ._font_resolver import resolve_font_path
69
+ sans_serif = self.get('font.sans-serif')
70
+ if not sans_serif:
71
+ return
72
+ if isinstance(sans_serif, str):
73
+ candidates = [sans_serif]
74
+ else:
75
+ candidates = list(sans_serif)
76
+ candidates = [c for c in candidates if c and c.lower() != 'sans-serif']
77
+ # 清空旧的字体栈
78
+ _rs.clear_font_stack()
79
+ # 注册所有字体
80
+ for family in candidates:
81
+ path = resolve_font_path(family)
82
+ if path is None:
83
+ import os
84
+ if os.path.isfile(family):
85
+ path = family
86
+ if path is not None:
87
+ try:
88
+ _rs.register_sans_serif_font(path, family)
89
+ except Exception:
90
+ pass
91
+ except Exception:
92
+ # 注册失败不影响 rcParams 写入
93
+ pass
94
+
95
+
96
+ # 全局单例
97
+ rcParams = RcParams()
98
+ # 原始默认配置的独立副本(供 rcParams.reset() 等恢复操作使用)。
99
+ # _DEFAULT_RC 的值仅含 list 与不可变标量,逐项复制 list 即可得到与 rcParams
100
+ # 互不影响的快照,因此不依赖 copy 模块。dict.__setitem__ 直写以跳过字体钩子。
101
+ rcParamsOrig = RcParams()
102
+ for _k, _v in rcParams.items():
103
+ dict.__setitem__(rcParamsOrig, _k, list(_v) if isinstance(_v, list) else _v)
@@ -0,0 +1,103 @@
1
+ """rsplotlib.style - Matplotlib style 兼容接口
2
+
3
+ 底层实现: Rust Style
4
+ """
5
+
6
+ from .. import rsplotlib as _rs
7
+
8
+
9
+ # ==================== 可用样式 ====================
10
+
11
+ AVAILABLE_STYLES = [
12
+ 'default',
13
+ 'classic',
14
+ 'ggplot',
15
+ 'seaborn-v0_8',
16
+ 'fast',
17
+ 'fivethirtyeight',
18
+ 'grayscale',
19
+ 'dark_background',
20
+ 'bmh',
21
+ 'tableau-colorblind10',
22
+ ]
23
+
24
+
25
+ class Style:
26
+ """样式管理器
27
+
28
+ 底层实现: Rust Style
29
+ """
30
+
31
+ def __init__(self):
32
+ self._impl = _rs.Style()
33
+
34
+ def use(self, style_name):
35
+ """应用样式
36
+
37
+ Args:
38
+ style_name: 样式名称
39
+ """
40
+ self._impl.use_(style_name)
41
+
42
+ def available(self):
43
+ """返回可用样式列表"""
44
+ return self._impl.available()
45
+
46
+ @property
47
+ def current(self):
48
+ return self._impl.current
49
+
50
+ def context(self, style_name):
51
+ """返回一个上下文管理器,用于临时应用样式
52
+
53
+ Example:
54
+ with style.context('seaborn-v0_8'):
55
+ plt.plot(x, y)
56
+ """
57
+ return _StyleContext(style_name)
58
+
59
+
60
+ # 全局样式实例
61
+ style = Style()
62
+
63
+
64
+ def use(style_name):
65
+ """应用样式(模块级函数)"""
66
+ style.use(style_name)
67
+
68
+
69
+ def available():
70
+ """返回可用样式列表"""
71
+ return style.available()
72
+
73
+
74
+ def current():
75
+ """返回当前样式名称"""
76
+ return style.current
77
+
78
+
79
+ class _StyleContext:
80
+ """样式上下文管理器"""
81
+
82
+ def __init__(self, style_name):
83
+ self._style_name = style_name
84
+ self._old_style = None
85
+
86
+ def __enter__(self):
87
+ self._old_style = style.current
88
+ style.use(self._style_name)
89
+ return self
90
+
91
+ def __exit__(self, exc_type, exc_val, exc_tb):
92
+ if self._old_style is not None:
93
+ style.use(self._old_style)
94
+
95
+
96
+ def context(style_name):
97
+ """返回一个上下文管理器,用于临时应用样式
98
+
99
+ Example:
100
+ with style.context('seaborn-v0_8'):
101
+ plt.plot(x, y)
102
+ """
103
+ return _StyleContext(style_name)
@@ -0,0 +1,112 @@
1
+ Metadata-Version: 2.4
2
+ Name: rsplotlib
3
+ Version: 0.3.5
4
+ Classifier: Programming Language :: Rust
5
+ Classifier: Programming Language :: Python :: 3
6
+ Classifier: Programming Language :: Python :: 3 :: Only
7
+ Classifier: Programming Language :: Python :: 3.9
8
+ Classifier: Programming Language :: Python :: 3.10
9
+ Classifier: Programming Language :: Python :: 3.11
10
+ Classifier: Programming Language :: Python :: 3.12
11
+ Classifier: Programming Language :: Python :: 3.13
12
+ Classifier: Programming Language :: Python :: 3.14
13
+ Classifier: Programming Language :: Python :: Implementation :: CPython
14
+ Classifier: Programming Language :: Python :: Implementation :: PyPy
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Operating System :: MacOS
17
+ Classifier: Operating System :: Microsoft :: Windows
18
+ Classifier: Operating System :: POSIX :: Linux
19
+ Classifier: Topic :: Scientific/Engineering :: Visualization
20
+ Requires-Dist: rsnumpy
21
+ License-File: LICENSE
22
+ Summary: A high-performance matplotlib-compatible plotting library powered by Rust
23
+ Keywords: plotting,matplotlib,visualization,rust,scientific
24
+ Author: YJ-Niu
25
+ License: MIT
26
+ Requires-Python: >=3.9
27
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
28
+
29
+ # rsplotlib
30
+
31
+ A high-performance Python plotting library powered by Rust, with a Matplotlib-compatible API.
32
+
33
+ ## Key Features
34
+
35
+ - **Matplotlib-Compatible API**: Low migration cost for existing Matplotlib users
36
+ - **scikit-rf Integration**: Full support for Network objects with frequency band slicing (e.g., `ring_slot['82-90ghz']`)
37
+ - **Rust-Powered Performance**: Offload rendering and batch operations to Rust for significant speed improvements
38
+ - **Rich Chart Types**: Line plots, scatter plots, bar charts, histograms, box plots, pie charts, heatmaps, and more
39
+ - **Per-Point Scatter Colors & Sizes**: Rust-level batch processing, zero Python loop overhead
40
+ - **Math Text Rendering**: LaTeX-style `$...$` expressions for titles, labels, and annotations
41
+ - **Colormaps & Colorbar**: 50+ built-in colormaps with `LogNorm` support
42
+ - **Image I/O**: `imshow`, `imread`, `imsave` with RGB/RGBA support
43
+ - **Cross-Platform Font Resolution**: Automatic system font detection with CJK support
44
+ - **High-Quality Output**: PNG and SVG with customizable DPI
45
+
46
+ ## Installation
47
+
48
+ ```bash
49
+ pip install rsplotlib
50
+ ```
51
+
52
+ Prebuilt wheels available for Linux (x86_64/aarch64), macOS (universal2), and Windows (x64) across Python 3.10-3.14.
53
+
54
+ ## Quick Start
55
+
56
+ ```python
57
+ from rsplotlib import pyplot as plt
58
+ from rsplotlib.pylab import mpl
59
+
60
+ # Optional: Configure fonts
61
+ mpl.rcParams['font.sans-serif'] = ['PingFang SC', 'Arial']
62
+
63
+ fig, ax = plt.subplots(figsize=(8, 6))
64
+ ax.plot([1, 2, 3], [1, 4, 9], label='Quadratic')
65
+ ax.set_title('Basic Line Plot')
66
+ ax.legend()
67
+ fig.savefig('plot.png', dpi=300)
68
+ ```
69
+
70
+ ### scikit-rf Integration
71
+
72
+ ```python
73
+ import skrf as rf
74
+ from skrf.data import ring_slot
75
+ import rsplotlib.pyplot as plt
76
+
77
+ rf.stylely()
78
+ ring_slot.s11.plot_s_db(label='Full Band Response')
79
+ # Frequency band slicing: select 82-90 GHz range
80
+ ring_slot.s11['82-90ghz'].plot_s_db(lw=3, label='Band of Interest')
81
+ plt.legend()
82
+ plt.savefig('s_parameters.png')
83
+ ```
84
+
85
+ Frequency band slicing supports human-readable strings like `'80-90ghz'`, `'1-2ghz'`, or `'500mhz'`. The sliced Network object retains all plotting capabilities (`plot_s_db`, `plot_s_mag`, `plot_s_smith`, etc.) with full matplotlib-compatible keyword arguments (`lw`, `ls`, `color`, `marker`, etc.).
86
+
87
+ ## Version v0.3.5
88
+
89
+ ### Improvements
90
+
91
+ - Increased default text font size by 10% for better readability
92
+ - Fixed text alignment default values and Python interface parameter mismatch
93
+ - Code cleanup and dependency optimization
94
+
95
+ ### Previous Versions
96
+
97
+ - v0.3.4: Legend ellipsis and layout improvements
98
+ - v0.3.3: Subplot layout fixes, dependency refactoring (removed rsnumpy)
99
+ - v0.3.2: Scipy interpolation simulation
100
+ - v0.3.1: Subplot spacing adjustments
101
+ - v0.3.0: Major API and architecture refactoring
102
+
103
+ ## Documentation
104
+
105
+ - [GitHub Repository](https://github.com/YJ-Niu/rsplotlib)
106
+ - [README](https://github.com/YJ-Niu/rsplotlib/blob/dev/README.md)
107
+ - [Release Notes](https://github.com/YJ-Niu/rsplotlib/blob/dev/RELEASE_NOTES.md)
108
+
109
+ ## License
110
+
111
+ MIT License
112
+
@@ -0,0 +1,31 @@
1
+ rsplotlib/__init__.py,sha256=8R8xKJbZDqsrsuydrg0PjZppB6FHlFQUTiGUEA9sdKE,3618
2
+ rsplotlib/_font_resolver.py,sha256=V7x9XBd7TFi0-RPwFwlPBYdjDDpFiODDtM4MW-HgUvA,5336
3
+ rsplotlib/cm.py,sha256=u2eze33RXawwbpzAtlVH2ZN0A94DkSZ598TY8YvH7F0,446
4
+ rsplotlib/collections.py,sha256=Um0l-J1cAJjM4AKlQv1vUj6tUgTVgjMJcSOb35R2hI8,944
5
+ rsplotlib/colors.py,sha256=ahXf783a7OQ_5z8NKOvQqneW9jURyaGfKnUIihheUU4,6567
6
+ rsplotlib/core/__init__.py,sha256=T2t6juqG5n71XaihpszJbESLE2JY3zdbOtVinlLpaAk,82
7
+ rsplotlib/core/api.py,sha256=o6VibmjEXAvzmjCXcQgkPgvsKUJspGFBBQ-NOnWJecE,22516
8
+ rsplotlib/dates.py,sha256=KKYqwkQhmD3MwfeTfxipJ6p2sQm0f2OmIbpPLZPwEUs,3018
9
+ rsplotlib/figure/__init__.py,sha256=XlM6P8cqfbsxwkdKL_rs41gpt3oZOGTLHrus4y32DdE,112
10
+ rsplotlib/figure/_defaults.py,sha256=FKRtHbZaV02n68WaU57dWBaQE8RAII6TWd-ufwDKlDs,389
11
+ rsplotlib/gridspec.py,sha256=fdSoXPapwfzPWQxaNPlM8I_L9i7aJIJVw51mGoCg_oI,233
12
+ rsplotlib/layout/__init__.py,sha256=Mm_2anQRk6T-HnKHAAUNEsvuYrWRh0jsozxxEy4Nkog,77
13
+ rsplotlib/layout/gridspec.py,sha256=hwjM2XQlOh_4GNQu5ip0G9-MpZCJsdmGpGrPzx1hIn8,5429
14
+ rsplotlib/patches.py,sha256=iNRroU4tLC2dwSyKoyeiWmSjkVpl9roGZB7USfF7hx4,1668
15
+ rsplotlib/path.py,sha256=gu8r56Nejq9FNGHMCGhRzf8LEGHrB6_XmODNPW5ckvM,122
16
+ rsplotlib/pylab.py,sha256=QaGBfGFHlgQPOOF6NyA2r_NvRNbNTp_PDbOCl57Uiv0,445
17
+ rsplotlib/pyplot.py,sha256=BduJT72Gxypr-ydkPkQnLSUfXAfLgjPSOAeTooJl6Bk,150824
18
+ rsplotlib/rsplotlib.cp39-win_amd64.pyd,sha256=eM2njq0Wob0ChB-Qlnz_j_WDL-kP0dSljT-7es6aJt4,4226048
19
+ rsplotlib/text.py,sha256=_y52tWVc5JktN3uie-W5ir-fmoEP5GlJegkBIzflfCY,700
20
+ rsplotlib/ticker.py,sha256=kjHc9e4JoxXswvXI2z-Bgo8n7yLGaz3don5KRhEmkOk,223
21
+ rsplotlib/ticks/__init__.py,sha256=bdnhyr7IAIW78hYnevl21XkaZVACnpQdp2W3bPIYgbw,74
22
+ rsplotlib/ticks/ticker.py,sha256=Glk9JbLzrSsJ9CdcXGV2uE5KTzgwGd7tmR8mZ-QoJec,6111
23
+ rsplotlib/utils/__init__.py,sha256=BFVEOv6qmqfOsWeFEqa_uzttVVikeZ4R8l___oyve_k,100
24
+ rsplotlib/utils/_font_resolver.py,sha256=UBTy9VpaHkIXPaipbAKo5eiW8riMw0P9eMPCZoy1rZo,1033
25
+ rsplotlib/utils/_rcparams.py,sha256=LbUG1Nof1pT22kTwvb0lbXZrIHfyxcH4KTKOvzm86Ys,4490
26
+ rsplotlib/utils/style.py,sha256=0bpnUMJFLruf2KHwzM4Ck5ebxwuZ1nlMYDMJ2GXCT2Q,2129
27
+ rsplotlib-0.3.5.dist-info/METADATA,sha256=RNlqWrAi2ypvDwQvEuLPqeErgfVNogWkqqpMFQQ9Utk,4251
28
+ rsplotlib-0.3.5.dist-info/WHEEL,sha256=m8JgLp6nXz2BSEyYAXKyCHNlGgh67GJFziubSI8oAYM,95
29
+ rsplotlib-0.3.5.dist-info/licenses/LICENSE,sha256=eV7NSTxi9DAhCqcJSSwYSYc8lLi9fQfD96Ly5sZV0Pc,1085
30
+ rsplotlib-0.3.5.dist-info/sboms/rsplotlib.cyclonedx.json,sha256=SLVhQD-1uTAYUn8QRwNUCw_ysyIdPZHzfzzVzzQflYg,70014
31
+ rsplotlib-0.3.5.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: maturin (1.14.1)
3
+ Root-Is-Purelib: false
4
+ Tag: cp39-cp39-win_amd64