又一款超酷的 Python 可视化神器:cutecharts
前言
今天給大家介紹一個很酷的 Python 手繪風格可視化神包:cutecharts
和 Matplotlib 、pyecharts 等常見的圖表不同,使用這個包可以生成看起來像手繪的各種圖表,在一些特殊場景下使用效果可能會更好。
GitHub 地址:
https://github.com/chenjiandongx/cutecharts
它的畫風是這樣的:
cutecharts是由pyecharts作者chenjiandongx開源的一個輕量級的項目;
目前支持Bar,?Line,Pie,Radar,Scatter五種圖表;
支持Page組合圖表;
安裝
?pip install cutecharts;
Line——基本示例
支持的參數直接參考源碼中的注釋就好~
def set_options(self,labels: Iterable,x_label: str = "",y_label: str = "",y_tick_count: int = 3,legend_pos: str = "upLeft",colors: Optional[Iterable] = None,font_family: Optional[str] = None,):""":param labels: X 坐標軸標簽數據:param x_label: X 坐標軸名稱:param y_label: Y 坐標軸名稱:param y_tick_count: Y 軸刻度分割段數:param legend_pos: 圖例位置,有 "upLeft", "upRight", "downLeft", "downRight" 可選:param colors: label 顏色數組:param font_family: CSS font-family"""def add_series(self, name: str, data: Iterable):""":param name: series 名稱:param data: series 數據列表"""基本示例
from cutecharts.charts import Line # 虛假數據 x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu', 'OnePlus'] y_data_1 = [57, 134, 137, 129, 145, 60, 49] y_data_2 = [114, 55, 27, 101, 125, 27, 105]chart = Line("Mobile phone sales") chart.set_options(labels=x_data, x_label="Brand", y_label="Sales", ) chart.add_series("series-A", y_data_1) chart.add_series("series-B", y_data_2) chart.render_notebook()修改圖例位置
from cutecharts.charts import Line # 虛假數據 x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu', 'OnePlus'] y_data_1 = [57, 134, 137, 129, 145, 60, 49] y_data_2 = [114, 55, 27, 101, 125, 27, 105]chart = Line("Mobile phone sales") chart.set_options(labels=x_data, x_label="Brand", y_label="Sales",legend_pos="upRight" ) chart.add_series("series-A", y_data_1) chart.add_series("series-B", y_data_2) chart.render_notebook()Bar——基本示例
不支持多個系列的數據~
def set_options(self,labels: Iterable,x_label: str = "",y_label: str = "",y_tick_count: int = 3,colors: Optional[Iterable] = None,font_family: Optional[str] = None,):""":param labels: X 坐標軸標簽數據:param x_label: X 坐標軸名稱:param y_label: Y 坐標軸名稱:param y_tick_count: Y 軸刻度分割段數:param colors: label 顏色數組:param font_family: CSS font-family"""def add_series(self, name: str, data: Iterable):""":param name: series 名稱:param data: series 數據列表"""基本示例
# 虛假數據 x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu', 'OnePlus'] y_data = [57, 134, 137, 129, 145, 60, 49]chart = Bar("Mobile phone sales") chart.set_options(labels=x_data, x_label="Brand", y_label="Sales",colors=Faker.colors ) chart.add_series("series-A", y_data)chart.render_notebook()Pie——基本示例
def set_options(self,labels: Iterable,inner_radius: float = 0.5,legend_pos: str = "upLeft",colors: Optional[Iterable] = None,font_family: Optional[str] = None,):""":param labels: 數據標簽列表:param inner_radius: Pie 圖半徑:param legend_pos: 圖例位置,有 "upLeft", "upRight", "downLeft", "downRight" 可選:param colors: label 顏色數組:param font_family: CSS font-family"""def add_series(self, data: Iterable):""":param data: series 數據列表"""基本示例
# 虛假數據 x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu', 'OnePlus'] y_data = [57, 134, 137, 129, 145, 60, 49]chart = Pie("Mobile phone sales") chart.set_options(labels=x_data, colors=Faker.colors ) chart.add_series(y_data)chart.render_notebook()修改內圈半徑
# 虛假數據 x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu', 'OnePlus'] y_data = [57, 134, 137, 129, 145, 60, 49]chart = Pie("Mobile phone sales") chart.set_options(labels=x_data, inner_radius=0,colors=Faker.colors ) chart.add_series(y_data)chart.render_notebook()Radar——基本示例
參考代碼注釋:
def set_options(self,labels: Iterable,is_show_label: bool = True,is_show_legend: bool = True,tick_count: int = 3,legend_pos: str = "upLeft",colors: Optional[Iterable] = None,font_family: Optional[str] = None,):""":param labels: 數據標簽列表:param is_show_label: 是否顯示標簽:param is_show_legend: 是否顯示圖例:param tick_count: 坐標系分割刻度:param legend_pos: 圖例位置,有 "upLeft", "upRight", "downLeft", "downRight" 可選:param colors: label 顏色數組:param font_family: CSS font-family"""def add_series(self, name: str, data: Iterable):""":param name: series 名稱:param data: series 數據列表"""基本示例
# 虛假數據 x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu', 'OnePlus'] y_data_1 = [57, 134, 137, 129, 145, 60, 49] y_data_2 = [114, 55, 27, 101, 125, 27, 105]chart = Radar("Mobile phone sales") chart.set_options(labels=x_data, is_show_legend=True,colors=Faker.colors ) chart.add_series("series-A", y_data_1) chart.add_series("series-B", y_data_2) chart.render_notebook()Scatter——基本示例
def set_options(self,x_label: str = "",y_label: str = "",x_tick_count: int = 3,y_tick_count: int = 3,is_show_line: bool = False,dot_size: int = 1,time_format: Optional[str] = None,legend_pos: str = "upLeft",colors: Optional[Iterable] = None,font_family: Optional[str] = None,):""":param x_label: X 坐標軸名稱:param y_label: Y 坐標軸名稱:param x_tick_count: X 軸刻度分割段數:param y_tick_count: Y 軸刻度分割段數:param is_show_line: 是否將散點連成線:param dot_size: 散點大小:param time_format: 日期格式:param legend_pos: 圖例位置,有 "upLeft", "upRight", "downLeft", "downRight" 可選:param colors: label 顏色數組:param font_family: CSS font-family"""def add_series(self, name: str, data: Iterable):""":param name: series 名稱:param data: series 數據列表,[(x1, y1), (x2, y2)]"""基本示例
# 隨機生成數據 data_1 = [(random.randint(0, 100), random.randint(0, 100)) for _ in range(100)] data_2 = [(random.randint(0, 100), random.randint(0, 100)) for _ in range(100)]chart = Scatter("random dot") chart.set_options(x_label = "I'm x-label",y_label = "I'm x-yabel",x_tick_count = 3,y_tick_count = 3,is_show_line = False,dot_size = 1,legend_pos = "upLeft",colors=Faker.colors ) chart.add_series("series-A", data_1) chart.add_series("series-A", data_2) chart.render_notebook()點連線
# 隨機生成數據 data_1 = [(random.randint(0, 100), random.randint(0, 100)) for _ in range(10)] data_2 = [(random.randint(0, 100), random.randint(0, 100)) for _ in range(10)]chart = Scatter("random dot") chart.set_options(x_label = "I'm x-label",y_label = "I'm x-yabel",x_tick_count = 3,y_tick_count = 3,is_show_line = True,dot_size = 1,legend_pos = "upLeft",colors=Faker.colors ) chart.add_series("series-A", data_1) chart.add_series("series-A", data_2) chart.render_notebook()組合圖表——Page
# 虛假數據 x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu', 'OnePlus'] y_data = [57, 134, 137, 129, 145, 60, 49]chart_1 = Pie("Mobile phone sales") chart_1.set_options(labels=x_data, inner_radius=0.6,colors=Faker.colors ) chart_1.add_series(y_data)chart_2 = Bar("Mobile phone sales") chart_2.set_options(labels=x_data, x_label="Brand", y_label="Sales",colors=Faker.colors ) chart_2.add_series("series-A", y_data)page = Page() page.add(chart_1, chart_2) page.render_notebook()原文鏈接:https://blog.csdn.net/qq_27484665/article/details/115472329
各位伙伴們好,詹帥本帥搭建了一個個人博客和小程序,匯集各種干貨和資源,也方便大家閱讀,感興趣的小伙伴請移步小程序體驗一下哦!(歡迎提建議)
推薦閱讀
牛逼!Python常用數據類型的基本操作(長文系列第①篇)
牛逼!Python的判斷、循環和各種表達式(長文系列第②篇)
牛逼!Python函數和文件操作(長文系列第③篇)
牛逼!Python錯誤、異常和模塊(長文系列第④篇)
總結
以上是生活随笔為你收集整理的又一款超酷的 Python 可视化神器:cutecharts的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么求导来着?别费劲了,试试这个Pyth
- 下一篇: 数据科学家提高效率的 40 个 Pyth