创建断裂轴
项目描述
brokenaxes
brokenaxes使matplotlib图表在轴上有断裂,以便显示跨越不连续范围的数值。
功能
- 断裂x和y轴。
- 支持单个轴上的多个断裂。
- 根据相对范围自动缩放轴。
- 绘制多条线。
- 带有相对于整个断裂轴对象的定位的图例
- 将x和y标签居中对齐到整个图表
- 使用
matplotlib.GridSpec.subplot_spec
将brokenaxes对象本身作为子图。 - xlims和ylims可以是
datetime.datetime
对象 - 支持对数刻度。
安装
我推荐Anaconda Python发行版,并且这个包可以通过PyPI获得
pip install brokenaxes
使用方法
import matplotlib.pyplot as plt
from brokenaxes import brokenaxes
import numpy as np
fig = plt.figure(figsize=(5, 2))
bax = brokenaxes(xlims=((0, .1), (.4, .7)), ylims=((-1, .7), (.79, 1)), hspace=.05)
x = np.linspace(0, 1, 100)
bax.plot(x, np.sin(10 * x), label='sin')
bax.plot(x, np.cos(10 * x), label='cos')
bax.legend(loc=3)
bax.set_xlabel('time')
bax.set_ylabel('value')
创建子图
from brokenaxes import brokenaxes
from matplotlib.gridspec import GridSpec
import numpy as np
sps1, sps2 = GridSpec(2,1)
bax = brokenaxes(xlims=((.1, .3), (.7, .8)), subplot_spec=sps1)
x = np.linspace(0, 1, 100)
bax.plot(x, np.sin(x*30), ls=':', color='m')
x = np.random.poisson(3, 1000)
bax = brokenaxes(xlims=((0, 2.5), (3, 6)), subplot_spec=sps2)
bax.hist(x, histtype='bar')
对数刻度
import matplotlib.pyplot as plt
from brokenaxes import brokenaxes
import numpy as np
fig = plt.figure(figsize=(5, 5))
bax = brokenaxes(
xlims=((1, 500), (600, 10000)),
ylims=((1, 500), (600, 10000)),
hspace=.15,
xscale='log',
yscale='log',
)
x = np.logspace(0.0, 4, 100)
bax.loglog(x, x, label='$y=x=10^{0}$ to $10^{4}$')
bax.legend(loc='best')
bax.grid(axis='both', which='major', ls='-')
bax.grid(axis='both', which='minor', ls='--', alpha=0.4)
bax.set_xlabel('x')
bax.set_ylabel('y')
plt.show()
datetime
import matplotlib.pyplot as plt
from brokenaxes import brokenaxes
import numpy as np
import datetime
fig = plt.figure(figsize=(5, 5))
xx = [datetime.datetime(2020, 1, x) for x in range(1, 20)]
yy = np.arange(1, 20)
bax = brokenaxes(
xlims=(
(
datetime.datetime(2020, 1, 1),
datetime.datetime(2020, 1, 3),
),
(
datetime.datetime(2020, 1, 6),
datetime.datetime(2020, 1, 20),
)
)
)
bax.plot(xx, yy)
fig.autofmt_xdate()
[x.remove() for x in bax.diag_handles]
bax.draw_diags()
import matplotlib.dates as mdates
for ax in bax.axs:
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%b-%d'))
文本注释
import matplotlib.pyplot as plt
from brokenaxes import brokenaxes
fig = plt.figure(figsize=(5, 5))
bax = brokenaxes(
xlims=((0, 0.1), (0.4, 0.7)), ylims=((-1, 0.7), (0.79, 1))
)
bax.text(0.5, 0.5, "hello")
我能做更多吗?
您可以在上述支持的特性之外自定义 brokenaxes。Brokenaxes 通过创建多个较小的坐标轴对象来工作,这些对象的坐标和大小由构造函数中使用的日期范围决定。这些单独的坐标轴被存储在 bax.axs
的列表中。大多数自定义都需要访问这些内部坐标轴对象。(参见 日期示例 的最后两行)。还有一个较大的不可见坐标轴对象 bax.big_ax
,它跨越整个 brokenaxes 区域,用于处理跨越所有较小坐标轴的 x 和 y 轴标签。
画廊
如果您使用这个工具制作了一个令您自豪的图表,请发送给我 png 和代码,我将将其添加到画廊中!
生活建议
请明智地使用此工具。任何数据可视化技术都可以用来阐明数据中的趋势,但也可以用来操纵和误导。后一种情况对于 broken axes 图表尤其如此,因此请尽量负责任地使用它们。除此之外,此软件免费使用。有关详细信息,请参阅许可文件。
测试
brokenaxes 使用 pytest-mpl
确保图表正确创建。
要从根目录运行以测试图表是否正确创建,请运行 pytest --mpl --mpl-baseline-path test_baseline test.py
。
要从根目录生成新的测试图表,请运行 pytest --mpl-generate-path test_baseline test.py
。
如果您在无头服务器上运行测试,可能需要将 MPLBACKEND 环境变量设置为 Agg。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
brokenaxes-0.6.2.tar.gz (9.8 kB 查看散列)
构建分布
brokenaxes-0.6.2-py3-none-any.whl (7.3 kB 查看散列)