不用第三方库,也能用 Python 作图,效果还不错
一提到用 Python 作圖,很多人第一個想到的庫肯定是 Matplotlib ,功能強大,但是相應地安裝所需要的依賴就多。有些開發者在自己的工作流中有簡單作圖的需求,但是又不希望引入依賴關系復雜的 Matplotlib,所以就有了 Chart。
Chart 是一個非常新的類庫,上線 Github 僅有 10 多天的時間,Star 數也不多。不過我覺得比較有意思,大家可以閱讀項目的源代碼,學習如何自己開發繪圖功能。
基本功能
Chart 目前僅支持三種圖表類型:柱形圖、散點圖和直方圖,圖表數據點可以使用自定義的標記。該庫的一個特點,在開頭我們也提到了,就是沒有任何的第三方依賴,完全是使用標準庫中的庫實現的。
柱形圖
柱形圖的創建,非常地簡單,傳入標簽和具體的值等數據,即可快速實現。下面是作者給出的示例:
from chart import bar x = [500, 200, 900, 400] y = ['marc', 'mummify', 'chart', 'sausagelink'] bar(x, y)柱形圖默認的數據點標記圖形,是 ▇,但是也支持自定義。
marc: ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ mummify: ▇▇▇▇▇▇▇ chart: ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ sausagelink: ▇▇▇▇▇▇▇▇▇▇▇▇▇比如說,可以改成:?
from chart import bar import pandas as pddf = pd.DataFrame({'artist': ['Tame Impala', 'Childish Gambino', 'The Knocks'],'listens': [8_456_831, 18_185_245, 2_556_448] }) bar(df.listens, df.artist, width=20, label_width=11, mark='?') ---------------------------------------- Tame Impala: ????????? Childish Ga: ???????????????????? The Knocks: ???從上面的示例,還可以看出, bar 函數還接受 pandas 數據框的列數據
直方圖
直方圖也很簡單,提供了 histogram 快捷函數。
from chart import histogram x = [1, 2, 4, 3, 3, 1, 7, 9, 9, 1, 3, 2, 1, 2] histogram(x) ----------------------- ▇ ▇ ▇ ▇ ▇ ▇ ▇ ▇ ▇ ▇ ▇ ▇ ▇ ▇ ▇ ▇ ▇ ▇ ▇ ▇散點圖
from chart import scatter x = range(0, 20) y = range(0, 20) scatter(x, y)? ? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ??RangeScaler
以 bar 圖形為例,我們看到 x 軸的值相差可能會非常大:[500,200,900,400],示例中最大有 700 的差值。在顯示圖表的時候,我們知道屏幕的范圍是有限的,因此必須要限制柱形的最大高度。
給定數值范圍后,就需要對 x 軸的值進行預處理,將所有的數據統一到同一個范圍內,這也是整個庫最為重要、最為核心的部分了。
from chart.preprocessing import RangeScalerrs = RangeScaler(out_range=(0, 10), round=False) x = range(50, 59) rs.fit_transform(x) # output[0.0, 1.25, 2.5, 3.75, 5.0, 6.25, 7.5, 8.75, 10.0]結語
開頭提到,這個庫的功能簡單,沒有任何依賴,因此代碼量很少,非常適合大家閱讀它的源代碼。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的不用第三方库,也能用 Python 作图,效果还不错的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用Python 给你的个人微信朋友圈数据
- 下一篇: Python D6 if分支结构