openpyxl3.0官方文档(11)—— 折线图

折线图¶

折线图允许根据固定轴绘制数据。它们类似于散点图,主要的区别在于用线图绘制数据序列时使用相同的值。不同类型的轴可用于次轴。
与条形图类似,有三种折线图:标准折线图、堆积折线图和百分比堆积折线图。

    from datetime import date
    
    from openpyxl import Workbook
    from openpyxl.chart import (
        LineChart,
        Reference,
    )
    from openpyxl.chart.axis import DateAxis
    
    wb = Workbook()
    ws = wb.active
    
    rows = [
        ['Date', 'Batch 1', 'Batch 2', 'Batch 3'],
        [date(2015,9, 1), 40, 30, 25],
        [date(2015,9, 2), 40, 25, 30],
        [date(2015,9, 3), 50, 30, 45],
        [date(2015,9, 4), 30, 25, 40],
        [date(2015,9, 5), 25, 35, 30],
        [date(2015,9, 6), 20, 40, 35],
    ]
    
    for row in rows:
        ws.append(row)
    
    c1 = LineChart()
    c1.title = "Line Chart"
    c1.style = 13
    c1.y_axis.title = 'Size'
    c1.x_axis.title = 'Test Number'
    
    data = Reference(ws, min_col=2, min_row=1, max_col=4, max_row=7)
    c1.add_data(data, titles_from_data=True)
    
    # Style the lines
    s1 = c1.series[0]
    s1.marker.symbol = "triangle"
    s1.marker.graphicalProperties.solidFill = "FF0000" # Marker filling
    s1.marker.graphicalProperties.line.solidFill = "FF0000" # Marker outline
    
    s1.graphicalProperties.line.noFill = True
    
    s2 = c1.series[1]
    s2.graphicalProperties.line.solidFill = "00AAAA"
    s2.graphicalProperties.line.dashStyle = "sysDot"
    s2.graphicalProperties.line.width = 100050 # width in EMUs
    
    s2 = c1.series[2]
    s2.smooth = True # Make the line smooth
    
    ws.add_chart(c1, "A10")
    
    from copy import deepcopy
    stacked = deepcopy(c1)
    stacked.grouping = "stacked"
    stacked.title = "Stacked Line Chart"
    ws.add_chart(stacked, "A27")
    
    percent_stacked = deepcopy(c1)
    percent_stacked.grouping = "percentStacked"
    percent_stacked.title = "Percent Stacked Line Chart"
    ws.add_chart(percent_stacked, "A44")
    
    # Chart with date axis
    c2 = LineChart()
    c2.title = "Date Axis"
    c2.style = 12
    c2.y_axis.title = "Size"
    c2.y_axis.crossAx = 500
    c2.x_axis = DateAxis(crossAx=100)
    c2.x_axis.number_format = 'd-mmm'
    c2.x_axis.majorTimeUnit = "days"
    c2.x_axis.title = "Date"
    
    c2.add_data(data, titles_from_data=True)
    dates = Reference(ws, min_col=1, min_row=2, max_row=7)
    c2.set_categories(dates)
    
    ws.add_chart(c2, "A61")
    
    wb.save("line.xlsx")
    
在这里插入图片描述

三维折线图¶

在三维折线图中,第三个轴与序列的图例相同。

    from datetime import date
    
    from openpyxl import Workbook
    from openpyxl.chart import (
        LineChart3D,
        Reference,
    )
    from openpyxl.chart.axis import DateAxis
    
    wb = Workbook()
    ws = wb.active
    
    rows = [
        ['Date', 'Batch 1', 'Batch 2', 'Batch 3'],
        [date(2015,9, 1), 40, 30, 25],
        [date(2015,9, 2), 40, 25, 30],
        [date(2015,9, 3), 50, 30, 45],
        [date(2015,9, 4), 30, 25, 40],
        [date(2015,9, 5), 25, 35, 30],
        [date(2015,9, 6), 20, 40, 35],
    ]
    
    for row in rows:
        ws.append(row)
    
    c1 = LineChart3D()
    c1.title = "3D Line Chart"
    c1.legend = None
    c1.style = 15
    c1.y_axis.title = 'Size'
    c1.x_axis.title = 'Test Number'
    
    data = Reference(ws, min_col=2, min_row=1, max_col=4, max_row=7)
    c1.add_data(data, titles_from_data=True)
    
    ws.add_chart(c1, "A10")
    
    wb.save("line3D.xlsx")
    
在这里插入图片描述

你可能感兴趣的:(openpyxl3.0官方文档(11)—— 折线图)