跳转到主要内容

一组用于以面向对象的方式测试matplotlib图形的实用工具。

项目描述

# plotchecker

[![构建状态](https://travis-ci.org/jhamrick/plotchecker.svg?branch=master)](https://travis-ci.org/jhamrick/plotchecker)
[![codecov.io](http://codecov.io/github/jhamrick/plotchecker/coverage.svg?branch=master)](http://codecov.io/github/jhamrick/plotchecker?branch=master)
[![文档状态](https://readthedocs.org/projects/plotchecker/badge/?version=latest)](http://plotchecker.readthedocs.org/en/latest/?badge=latest)

一组用于检查和评分matplotlib图形的实用工具。**请注意,`plotchecker`仅兼容Python 3,不兼容旧版Python 2**。文档可在[Read The Docs](https://plotchecker.readthedocs.org/)上找到。

## 安装

要安装`plotchecker`

```
pip3 install plotchecker
```

## 背景

此库的灵感来源于在编程作业中包含绘图练习。通常,有多种解决同一问题的方法;例如,如果要求学生创建一个“散点图”,以下都是有效的实现方法

```python
# 方法1
plt.plot(x, y, 'o')

# 方法2
plt.scatter(x, y)

# 方法3
for i in range(len(x))
plt.plot(x[i], y[i], 'o')

# 方法4
for i in range(len(x))
plt.scatter(x[i], y[i])
```

不幸的是,上述每种方法在matplotlib中都会创建不同的数据底层表示。方法1创建一个Line对象;方法2创建一个Collection;方法3创建*n*个Line对象,其中*n*是点的数量;方法4创建*n*个Collection对象。测试所有这些不同的边缘情况给教师带来了巨大的负担。

虽然上述一些选项在简单性和性能方面确实比其他选项好,但是要求学生以一种非常具体的方式来创建他们的图表,而我们只要求他们创建散点图,这似乎并不公平。如果它们在视觉上几乎相同,为什么这不是一种有效的方法呢?

请进入“plotchecker”,它旨在抽象化这些差异,并为教师提供一个简单的界面来检查学生的图表。所有必要的只是访问“Axes”对象,然后您可以编写一组通用的测试,用于检查与创建方式无关的图表。

```python
from plotchecker import ScatterPlotChecker

axis = plt.gca()
pc = ScatterPlotChecker(axis)
pc.assert_x_data_equal(x)
pc.assert_y_data_equal(y)
...
```

请参阅[Examples.ipynb](Examples.ipynb)笔记本,以了解如何使用`plotchecker`的更多示例。

注意事项:在matplotlib中创建图表的方式有很多种。`plotchecker`几乎肯定会错过一些边缘情况。如果您发现任何问题,请提交错误报告(或者更好的,提交一个PR!)

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

plotchecker-0.2.0.tar.gz (75.0 kB 查看哈希)

上传时间

构建分布

plotchecker-0.2.0-py2.py3-none-any.whl (116.1 kB 查看哈希)

上传时间 Python 2 Python 3

由以下支持