一個有趣手繪風格的Python繪圖庫使用

今天無意間刷到了一個跟Python可視化相關的頭條,就點進去看看,這是一位作者編寫的手繪風格的繪圖工具,對可視化工作一直都是比較感興趣的,所以這裡就想直接上手使用一下。

GitHub地址在這裡。首頁截圖如下:

一個有趣手繪風格的Python繪圖庫使用

最下方也給出了安裝方式,應該是以Python3為基礎編寫的,所以Python2應該是安裝不了的,所以這裡我本地使用的話也是基於Python3來進行安裝的,安裝截圖如下:

一個有趣手繪風格的Python繪圖庫使用

成功安裝後就可以使用了,這裡我藉助的是jupyter-notebook來進行實踐的,原因是這個庫本身也是會有與web交互的地方的,所以我覺得jupyter可能更合適。下面是具體的實踐:

【柱狀圖】

一個有趣手繪風格的Python繪圖庫使用

【折線圖】

一個有趣手繪風格的Python繪圖庫使用

【柱狀圖+折線圖】

當前,也是可以一張圖裡面同時繪製柱狀圖和折線圖或者其他類型的圖像的,這裡簡單舉例:

from cutecharts.charts import Bar, Line
from cutecharts.faker import Faker
from cutecharts.components import Page
 
def bar_base() -> Bar:
 chart = Bar("手繪風格的柱狀圖")
 chart.set_options(labels=Faker.choose(), x_label="類別", y_label="數量")
 chart.add_series("series-A", Faker.values())
 return chart
 
def line_base() -> Line:
 chart = Line("手繪風格的折線統計圖")
 chart.set_options(labels=Faker.choose(), x_label="種類", y_label="數量")
 chart.add_series("series-A", Faker.values())
 chart.add_series("series-B", Faker.values())
 return chart
 
 
page = Page()
page.add(bar_base(),line_base())
page.render('both.html')

由於截圖比較大,這裡採用保存本地文件的形式,結果如下:

一個有趣手繪風格的Python繪圖庫使用

這裡也可以對線條或者圖形的顏色進行調整,如下:

一個有趣手繪風格的Python繪圖庫使用

【餅圖】

一個有趣手繪風格的Python繪圖庫使用

可以修改字體,如下:

一個有趣手繪風格的Python繪圖庫使用

一個有趣手繪風格的Python繪圖庫使用

【雷達圖】

一個有趣手繪風格的Python繪圖庫使用

【散點圖】

一個有趣手繪風格的Python繪圖庫使用

也可以調整散點的大小程度。

一個有趣手繪風格的Python繪圖庫使用

也可以將散點連成線,這個我覺得平時使用到的場景比較少。

一個有趣手繪風格的Python繪圖庫使用

最後貼出來完整的代碼:

# -*- coding: utf-8 -*-
# ---
# jupyter:
# jupytext:
# formats: ipynb,py:light
# text_representation:
# extension: .py
# format_name: light
# format_version: '1.4'
# jupytext_version: 1.1.6
# kernelspec:
# display_name: python36
# language: python
# name: python36
# ---
 
# +
from cutecharts.charts import Bar, Line
from cutecharts.faker import Faker
from cutecharts.components import Page
 
def bar_base() -> Bar:
 chart = Bar("手繪風格的柱狀圖")
 chart.set_options(labels=Faker.choose(), x_label="類別", y_label="數量")
 chart.add_series("series-A", Faker.values())
 return chart
 
page = Page()
page.add(bar_base())
page.render_notebook()
 
# +
from cutecharts.charts import Bar, Line
from cutecharts.faker import Faker
from cutecharts.components import Page
 
def line_base() -> Line:
 chart = Line("手繪風格的折線統計圖")
 chart.set_options(labels=Faker.choose(), x_label="種類", y_label="數量")
 chart.add_series("series-A", Faker.values())
 chart.add_series("series-B", Faker.values())
 return chart
 
page = Page()
page.add(line_base())
page.render_notebook()
 
# +
from cutecharts.charts import Bar, Line
from cutecharts.faker import Faker
from cutecharts.components import Page
 
def bar_base() -> Bar:
 chart = Bar("手繪風格的柱狀圖")
 chart.set_options(labels=Faker.choose(), x_label="類別", y_label="數量")
 chart.add_series("series-A", Faker.values())
 return chart
 
def line_base() -> Line:
 chart = Line("手繪風格的折線統計圖")
 chart.set_options(labels=Faker.choose(), x_label="種類", y_label="數量")
 chart.add_series("series-A", Faker.values())
 chart.add_series("series-B", Faker.values())
 return chart
 
 
page = Page()
page.add(bar_base(),line_base())
page.render('both.html')
 
 
# +
def line_tickcount_colors():
 chart = Line("Line-調整顏色")
 chart.set_options(labels=Faker.choose(), colors=Faker.colors, y_tick_count=8)
 chart.add_series("series-A", Faker.values())
 chart.add_series("series-B", Faker.values())
 return chart
 
 
line_tickcount_colors().render_notebook()
 
# +
from cutecharts.charts import Pie
from cutecharts.components import Page
from cutecharts.faker import Faker
 
 
def pie_base() -> Pie:
 chart = Pie("手繪風格餅圖")
 chart.set_options(labels=Faker.choose())
 chart.add_series(Faker.values())
 return chart
 
 
pie_base().render_notebook()
 
 
# -
 
def pie_legend_font():
 chart = Pie("Pie-Legend")
 chart.set_options(
 labels=Faker.choose(),
 legend_pos="downLeft",
 font_family='"Times New Roman",Georgia,Serif;',
 )
 chart.add_series(Faker.values())
 return chart
pie_legend_font().render_notebook()
 
 
def pie_radius():
 chart = Pie("Pie-Radius")
 chart.set_options(
 labels=Faker.choose(),
 inner_radius=0,
 )
 chart.add_series(Faker.values())
 return chart
pie_radius().render_notebook()
 
# +
from cutecharts.charts import Radar
from cutecharts.components import Page
from cutecharts.faker import Faker
 
 
def radar_base() -> Radar:
 chart = Radar("手繪風格雷達圖")
 chart.set_options(labels=Faker.choose())
 chart.add_series("series-A", Faker.values())
 chart.add_series("series-B", Faker.values())
 return chart
 
 
radar_base().render_notebook()
 
# +
from cutecharts.charts import Scatter
from cutecharts.components import Page
from cutecharts.faker import Faker
 
def scatter_base() -> Scatter:
 chart = Scatter("手繪風格散點圖")
 chart.set_options(x_label="時間", y_label="數量")
 chart.add_series("series-A", [(z[0], z[1]) for z in zip(Faker.values(), Faker.values())])
 chart.add_series("series-B", [(z[0], z[1]) for z in zip(Faker.values(), Faker.values())])
 return chart
 
scatter_base().render_notebook()
 
 
# -
 
def scatter_dotsize_tickcount():
 chart = Scatter("Scatter-散點大小")
 chart.set_options(dot_size=2, y_tick_count=8)
 chart.add_series("series-A", [(z[0], z[1]) for z in zip(Faker.values(), Faker.values())])
 chart.add_series("series-B", [(z[0], z[1]) for z in zip(Faker.values(), Faker.values())])
 return chart
scatter_dotsize_tickcount().render_notebook()
 
 
def scatter_show_line():
 chart = Scatter("Scatter-散點連成線")
 chart.set_options(y_tick_count=8, is_show_line=True)
 chart.add_series(
 "series-A", [(z[0], z[1]) for z in zip(Faker.values(), Faker.values())]
 )
 chart.add_series(
 "series-B", [(z[0], z[1]) for z in zip(Faker.values(), Faker.values())]
 )
 return chart
scatter_show_line().render_notebook()
 
 


分享到:


相關文章: