社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

编程派 • 5 年前 • 511 次点击  


文 | 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
 
511 次点击