zoukankan      html  css  js  c++  java
  • Python第三方库之openpyxl(8)

    Python第三方库之openpyxl(8)

    饼图

    饼图将数据绘制成一个圆片,每个片代表整体的百分比。切片是按顺时针方向绘制的,0在圆的顶部。饼图只能取一组数据。该图表的标题将默认为该系列的标题。

    2D饼图

    from openpyxl import Workbook
    
    from openpyxl.chart import (
        PieChart,
        ProjectedPieChart,
        Reference
    )
    from openpyxl.chart.series import DataPoint
    
    data = [
        ['Pie', 'Sold'],
        ['Apple', 50],
        ['Cherry', 30],
        ['Pumpkin', 10],
        ['Chocolate', 40],
    ]
    
    wb = Workbook()
    ws = wb.active
    
    for row in data:
        ws.append(row)
    
    pie = PieChart()
    labels = Reference(ws, min_col=1, min_row=2, max_row=5)
    data = Reference(ws, min_col=2, min_row=1, max_row=5)
    pie.add_data(data, titles_from_data=True)
    pie.set_categories(labels)
    pie.title = "Pies sold by category"
    
    # Cut the first slice out of the pie
    slice = DataPoint(idx=0, explosion=20)
    pie.series[0].data_points = [slice]
    
    ws.add_chart(pie, "D1")
    
    
    ws = wb.create_sheet(title="Projection")
    
    data = [
        ['Page', 'Views'],
        ['Search', 95],
        ['Products', 4],
        ['Offers', 0.5],
        ['Sales', 0.5],
    ]
    
    for row in data:
        ws.append(row)
    
    projected_pie = ProjectedPieChart()
    projected_pie.type = "pie"
    projected_pie.splitType = "val" # split by value
    labels = Reference(ws, min_col=1, min_row=2, max_row=5)
    data = Reference(ws, min_col=2, min_row=1, max_row=5)
    projected_pie.add_data(data, titles_from_data=True)
    projected_pie.set_categories(labels)
    
    ws.add_chart(projected_pie, "A10")
    
    from copy import deepcopy
    projected_bar = deepcopy(projected_pie)
    projected_bar.type = "bar"
    projected_bar.splitType = 'pos' # split by position
    
    ws.add_chart(projected_bar, "A27")
    
    wb.save("pie.xlsx")

    运行结果

     2D投影饼图

     投影饼图从饼图中提取出一些切片,并将它们投射到第二个饼状图或柱状图中。当数据系列中有几个较小的项时,这是很有用的。图表可以根据百分比、val(ue)或pos(ition)进行分割。如果没有设置任何东西,应用程序就决定使用哪一个。此外,还可以定义自定义分割。

     3D饼状图

    from openpyxl import Workbook
    
    from openpyxl.chart import (
        PieChart3D,
        Reference
    )
    
    data = [
        ['Pie', 'Sold'],
        ['Apple', 50],
        ['Cherry', 30],
        ['Pumpkin', 10],
        ['Chocolate', 40],
    ]
    
    wb = Workbook()
    ws = wb.active
    
    for row in data:
        ws.append(row)
    
    pie = PieChart3D()
    labels = Reference(ws, min_col=1, min_row=2, max_row=5)
    data = Reference(ws, min_col=2, min_row=1, max_row=5)
    pie.add_data(data, titles_from_data=True)
    pie.set_categories(labels)
    pie.title = "Pies sold by category"
    
    
    ws.add_chart(pie, "D1")
    
    wb.save("pie3D.xlsx")

    运行结果

  • 相关阅读:
    【安卓】安卓res文件夹下的资源文件与R.java文件里面类的对应关系
    超简单,安卓模拟器手动root
    C++成员初始化顺序
    C++,当类名和对象名称相同时会发生什么?
    C++ 修饰名的格式探究
    总结一下classpath
    卡鲁斯卡尔
    ST表
    P2672跳石头
    2019奥赛考前刷题计划
  • 原文地址:https://www.cnblogs.com/Keys819/p/9315529.html
Copyright © 2011-2022 走看看