概述
前言
bokeh
pyecharts
bokeh
这里展示一下常用的图表,详细的文档可查看(/en/latest/docs/user_guide/categorical.html)
条形图
条形图from bokeh.io import show, output_filefrom bokeh.models import ColumnDataSourcefrom bokeh.palettes import Spectral6from bokeh.plotting import figureoutput_file("colormapped_bars.html")# 配置输出文件名fruits = ['Apples', '魅族', 'OPPO', 'VIVO', '小米', '华为'] # 数据counts = [5, 3, 4, 2, 4, 6] # 数据source = ColumnDataSource(data=dict(fruits=fruits, counts=counts, color=Spectral6))p = figure(x_range=fruits, y_range=(0,9), plot_height=250, title="Fruit Counts",toolbar_location=None, tools="")# 条形图配置项p.vbar(x='fruits', top='counts', width=0.9, color='color', legend="fruits", source=source)p.xgrid.grid_line_color = None # 配置网格线颜色p.legend.orientation = "horizontal" # 图表方向为水平方向p.legend.location = "top_center"show(p) # 展示图表
年度条形图
年度条形图from bokeh.io import show, output_filefrom bokeh.models import ColumnDataSource, FactorRangefrom bokeh.plotting import figureoutput_file("bars.html")fruits = ['Apples', '魅族', 'OPPO', 'VIVO', '小米', '华为']years = ['', '', '']data = {'fruits': fruits,'': [2, 1, 4, 3, 2, 4],'': [5, 3, 3, 2, 4, 6],'': [3, 2, 4, 4, 5, 3]}x = [(fruit, year) for fruit in fruits for year in years]counts = sum(zip(data[''], data[''], data['']), ()) source = ColumnDataSource(data=dict(x=x, counts=counts))p = figure(x_range=FactorRange(*x), plot_height=250, title="Fruit Counts by Year",toolbar_location=None, tools="")p.vbar(x='x', top='counts', width=0.9, source=source)p.y_range.start = 0p.x_range.range_padding = 0.1p.xaxis.major_label_orientation = 1p.xgrid.grid_line_color = Noneshow(p)
饼图
饼图from collections import Counterfrom math import piimport pandas as pdfrom bokeh.io import output_file, showfrom bokeh.palettes import Category20cfrom bokeh.plotting import figurefrom bokeh.transform import cumsumoutput_file("pie.html")x = Counter({ # 数据与权重'中国': 157,'美国': 93,'日本': 89,'巴西': 63,'德国': 44,'印度': 42,'意大利': 40,'澳大利亚': 35,'法国': 31,'西班牙': 29})data = pd.DataFrame.from_dict(dict(x), orient='index').reset_index().rename(index=str, columns={0:'value', 'index':'country'})data['angle'] = data['value']/sum(x.values()) * 2*pidata['color'] = Category20c[len(x)]p = figure(plot_height=350, title="Pie Chart", toolbar_location=None,tools="hover", tooltips="@country: @value")p.wedge(x=0, y=1, radius=0.4,start_angle=cumsum('angle', include_zero=True), end_angle=cumsum('angle'),line_color="white", fill_color='color', legend='country', source=data)p.axis.axis_label=Nonep.axis.visible=Falsep.grid.grid_line_color = None # 网格线颜色show(p)
条形图
年度水果进出口from bokeh.io import output_file, showfrom bokeh.models import ColumnDataSourcefrom bokeh.palettes import GnBu3, OrRd3from bokeh.plotting import figureoutput_file("stacked_split.html")fruits = ['Apples', 'Pears', 'Nectarines', 'Plums', 'Grapes', 'Strawberries']years = ["", "", ""]exports = {'fruits': fruits,'': [2, 1, 4, 3, 2, 4],'': [5, 3, 4, 2, 4, 6],'': [3, 2, 4, 4, 5, 3]}imports = {'fruits': fruits,'': [-1, 0, -1, -3, -2, -1],'': [-2, -1, -3, -1, -2, -2],'': [-1, -2, -1, 0, -2, -2]}p = figure(y_range=fruits, plot_height=250, x_range=(-16, 16), title="Fruit import/export, by year",toolbar_location=None)p.hbar_stack(years, y='fruits', height=0.9, color=GnBu3, source=ColumnDataSource(exports),legend=["%s exports" % x for x in years])p.hbar_stack(years, y='fruits', height=0.9, color=OrRd3, source=ColumnDataSource(imports),legend=["%s imports" % x for x in years])p.y_range.range_padding = 0.1p.ygrid.grid_line_color = Nonep.legend.location = "top_left"p.axis.minor_tick_line_color = Nonep.outline_line_color = Noneshow(p)
散点图
散点图from bokeh.plotting import figure, output_file, showoutput_file("line.html")p = figure(plot_width=400, plot_height=400)p.circle([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], size=20, color="navy", alpha=0.5)show(p)
六边形图
六边形图import numpy as npfrom bokeh.io import output_file, showfrom bokeh.plotting import figurefrom bokeh.util.hex import axial_to_cartesianoutput_file("hex_coords.html")q = np.array([0, 0, 0, -1, -1, 1, 1])r = np.array([0, -1, 1, 0, 1, -1, 0])p = figure(plot_width=400, plot_height=400, toolbar_location=None) # p.grid.visible = False # 配置网格是否可见p.hex_tile(q, r, size=1, fill_color=["firebrick"] * 3 + ["navy"] * 4,line_color="white", alpha=0.5)x, y = axial_to_cartesian(q, r, 1, "pointytop")p.text(x, y, text=["(%d, %d)" % (q, r) for (q, r) in zip(q, r)],text_baseline="middle", text_align="center")show(p)
元素周期表
元素周期表pyecharts
pyecharts 也是一个比较常用的数据可视化库,用得也是比较多的了,是百度 echarts 库的 python 支持。这里也展示一下常用的图表。文档地址为(/#/zh-cn/prepare?id=%E5%AE%89%E8%A3%85-pyecharts)
条形图
条形图from pyecharts import Barbar = Bar("我的第一个图表", "这里是副标题")bar.add("服装", ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"], [5, 20, 36, 10, 75, 90])# bar.print_echarts_options() # 该行只为了打印配置项,方便调试时使用bar.render() # 生成本地 HTML 文件
散点图
散点图from pyecharts import Polarimport randomdata_1 = [(10, random.randint(1, 100)) for i in range(300)]data_2 = [(11, random.randint(1, 100)) for i in range(300)]polar = Polar("极坐标系-散点图示例", width=1200, height=600)polar.add("", data_1, type='scatter')polar.add("", data_2, type='scatter')polar.render()
饼图
饼图import randomfrom pyecharts import Pieattr = ['A', 'B', 'C', 'D', 'E', 'F']pie = Pie("饼图示例", width=1000, height=600)pie.add("",attr,[random.randint(0, 100) for _ in range(6)],radius=[50, 55],center=[25, 50],is_random=True,)pie.add("",attr,[random.randint(20, 100) for _ in range(6)],radius=[0, 45],center=[25, 50],rosetype="area",)pie.add("",attr,[random.randint(0, 100) for _ in range(6)],radius=[50, 55],center=[65, 50],is_random=True,)pie.add("",attr,[random.randint(20, 100) for _ in range(6)],radius=[0, 45],center=[65, 50],rosetype="radius",)pie.render()
词云
词云from pyecharts import WordCloudname = ['Sam S Club'] # 词条value = [10000] # 权重wordcloud = WordCloud(width=1300, height=620)wordcloud.add("", name, value, word_size_range=[20, 100])wordcloud.render()
树图
树图转载自公众号「zone7」