Py学习  »  Python

不用第三方库,也能用 Python 作图,效果还不错

编程派 • 4 年前 • 345 次点击  


文 | EarlGrey

推荐 | 编程派公众号(ID:codingpy)

一提到用 Python 作图,很多人第一个想到的库肯定是 Matplotlib ,功能强大,但是相应地安装所需要的依赖就多。有些开发者在自己的工作流中有简单作图的需求,但是又不希望引入依赖关系复杂的 Matplotlib,所以就有了 Chart。

Chart 是一个非常新的类库,上线 Github 仅有 10 多天的时间,Star 数也不多。不过我觉得比较有意思,大家可以阅读项目的源代码,学习如何自己开发绘图功能

基本功能

Chart 目前仅支持三种图表类型:柱形图、散点图和直方图,图表数据点可以使用自定义的标记。该库的一个特点,在开头我们也提到了,就是没有任何的第三方依赖,完全是使用标准库中的库实现的。

柱形图

柱形图的创建,非常地简单,传入标签和具体的值等数据,即可快速实现。下面是作者给出的示例:

  1. from chart import bar


  2. x = [500, 200, 900, 400]

  3. y = ['marc', 'mummify', 'chart', 'sausagelink']


  4. bar(x, y)

柱形图默认的数据点标记图形,是 ,但是也支持自定义。

  1. marc: ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇

  2. mummify: ▇▇▇▇▇▇▇

  3. chart: ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇

  4. sausagelink: ▇▇▇▇▇▇▇▇▇▇▇▇▇

比如说,可以改成:🔊

  1. from chart import bar

  2. import pandas as pd


  3. df = pd.DataFrame({

  4. 'artist': ['Tame Impala', 'Childish Gambino', 'The Knocks'],

  5. 'listens': [8_456_831, 18_185_245, 2_556_448]

  6. })

  7. bar(df.listens, df.artist, width=20, label_width=11, mark='🔊')

  1. Tame Impala: 🔊🔊🔊🔊🔊🔊🔊🔊🔊

  2. Childish Ga: 🔊🔊🔊🔊🔊🔊🔊🔊🔊🔊🔊🔊🔊🔊🔊🔊🔊🔊🔊🔊

  3. The Knocks: 🔊🔊🔊

从上面的示例,还可以看出, bar 函数还接受 pandas 数据框的列数据

直方图

直方图也很简单,提供了 histogram 快捷函数。

  1. from chart import histogram


  2. x = [1, 2, 4, 3, 3, 1, 7, 9, 9, 1, 3, 2, 1, 2]


  3. histogram(x)

  1. ▇ ▇

  2. ▇ ▇

  3. ▇ ▇

  4. ▇ ▇ ▇

  5. ▇ ▇ ▇

  6. ▇ ▇ ▇ ▇

散点图

  1. from chart import scatter


  2. x = range(0, 20)

  3. y = range(0, 20)


  4. scatter(x, y)

  1. • •

  2. • •

  3. • •

  4. • •

  5. • •

  6. • •

  7. • •

RangeScaler

bar 图形为例,我们看到 x 轴的值相差可能会非常大:[500,200,900,400],示例中最大有 700 的差值。在显示图表的时候,我们知道屏幕的范围是有限的,因此必须要限制柱形的最大高度。

给定数值范围后,就需要对 x 轴的值进行预处理,将所有的数据统一到同一个范围内,这也是整个库最为重要、最为核心的部分了。

  1. from chart.preprocessing import RangeScaler


  2. rs = RangeScaler(out_range=(0, 10), round=False)

  3. x = range(50, 59)

  4. rs.fit_transform(x)


  5. # output

  6. [0.0, 1.25, 2.5, 3.75, 5.0, 6.25, 7.5, 8.75, 10.0]

结语

开头提到,这个库的功能简单,没有任何依赖,因此代码量很少,非常适合大家阅读它的源代码。

刚才用到的 bar、histogram、scatter 和 RangeScaler 等函数,建议收藏本文后,进入项目页面查看相关源代码。

项目地址:https://github.com/maxhumber/chart

项目安装:pip install chart

回复下方「关键词」,获取优质资源


回复关键词「 pybook03」,立即获取主页君与小伙伴一起翻译的《Think Python 2e》电子版

回复关键词「书单02」,立即获取主页君整理的 10 本 Python 入门书的电子版



豆瓣 9.1 分,中文版销量 30 多万,零基础也能用这本书学会 Python

你想要的 IT 电子资源,这里可能都有


Python 或将超越 C、Java,成为最受欢迎的语言

Python 容器使用的 5 个技巧和 2 个误区

如何写出优雅的 Python 函数?

题图:pexels,CC0 授权。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38472
 
345 次点击