1

在此处输入图像描述

我能够xlsxwriter在 Python 中按线属性生成图形。但我需要在特定值上加上 4 个点(菱形)。谁能建议我如何使用xlsxwriter.

如果需要,我也可以发布代码。

from openpyxl import load_workbook
from xlsxwriter.workbook import Workbook
import math
def graph(headline,table_percentage,table_threashold):
    """Create Graph Chart"""
    wb = load_workbook(filename = 'sample.xlsx')
    worksheet_final = wb.get_sheet_by_name(name='test')
    workbook = Workbook('graphs.xlsx')
    worksheet = workbook.add_worksheet()

    heading =['test1','test2','test3','test4','test5']
    worksheet.write_row('A1',heading)
    count =2
    while(count < worksheet_final.get_highest_row()):
        data_x = worksheet_final.cell(row = count, column = 1).value
        data_y = worksheet_final.cell(row = count, column = 2).value
        data_s1 = worksheet_final.cell(row = count, column = 8).value
        data_d0 = worksheet_final.cell(row = count, column = 14).value
        data_d1 = worksheet_final.cell(row = count, column = 20).value
        worksheet.write(count,0,round(data_x,0))
        worksheet.write(count,1,data_y)
        worksheet.write(count,2,data_s1)
        worksheet.write(count,3,data_d0)
        worksheet.write(count,4,data_d1)
        count = count + 1
    # Create a new chart with properties object.
    chart = workbook.add_chart({'type': 'line'})
    cellname = headline
    chart.set_title({'name':cellname})
    chart.set_x_axis({'name':'CLK-D Time (ps)',
                  'name_font':{'size':14,'bold':True},
                  })
    chart.set_y_axis({'name':'CLK-Q Time (ps)',
                  'name_font':{'size':14,'bold':True},
                  })
    chart.set_size({'width': 720, 'height': 576})

    # Add a series to the chart.
    chart.add_series({
    'categories' : '=Sheet1!$A$2:$A$503',
    'values': '=Sheet1!$B$1:$B$503',
    'name':'clk2q0_S',
    'line':{'color':'blue'},
    })

    chart.add_series({
    'categories' : '=Sheet1!$A$2:$A$503',
    'values': '=Sheet1!$C$1:$C$503',
    'name':'clk2q1_S',
    'line':{'color':'red'}})

    chart.add_series({
    'categories' : '=Sheet1!$A$2:$A$503',
    'values': '=Sheet1!$D$1:$D$503',
    'name':'clk2q0_H',
    'line':{'color':'blue'}})

    chart.add_series({
    'categories' : '=Sheet1!$A$2:$A$503',
    'values': '=Sheet1!$E$1:$E$503',
    'name':'clk2q1_H',
    'line':{'color':'red'}})

   # Insert the chart into the worksheet.
    worksheet.insert_chart('K1', chart)
    workbook.close()

if __name__ == '__main__':
    table_percentage = "5%"
    table_threashold = {}
    #Need to put dot on the below 4 value
    table_threashold ['setup_mt1'] = [5,210]
    table_threashold ['setup_mt0'] = [-105,140]
    table_threashold ['hold_mt0'] = [-39,143]
    table_threashold ['hold_mt1'] = [-41,96]
    headline = "sample_data"

    graph(headline,table_percentage,table_threashold)
4

1 回答 1

2

XlsxWriter中,无法打开系列中的单个点标记,但可以为带有标记的系列关闭点标记。为此,您需要使用点(请参阅文档)系列选项并关闭您不想要的标记。

from xlsxwriter.workbook import Workbook

workbook = Workbook('chart_point.xlsx')

worksheet = workbook.add_worksheet()
chart = workbook.add_chart({'type': 'line'})

data = [
    [1, 2, 3, 4, 5],
    [2, 4, 6, 8, 10],
    [3, 6, 9, 12, 15],

]

# Write the data for the chart.
worksheet.write_column('A1', data[0])
worksheet.write_column('B1', data[1])
worksheet.write_column('C1', data[2])

# Add a chart series with markers but turn some off.
chart.add_series({
    'categories': '=Sheet1!$A$1:$A$5',
    'values': '=Sheet1!$B$1:$B$5',
    'marker': {'type': 'automatic'},
    'points': [
            {'fill': {'none': True}, 'line': {'none': True}},
            {'fill': {'none': True}, 'line': {'none': True}},
            {'fill': {'none': True}, 'line': {'none': True}},
            {'fill': {'none': True}, 'line': {'none': True}},
    ],
})

# Add a second chart series.
chart.add_series({
    'categories': '=Sheet1!$A$1:$A$5',
    'values': '=Sheet1!$C$1:$C$5',
    'marker': {'type': 'automatic'},
    'points': [
            {'fill': {'none': True}, 'line': {'none': True}},
            {},
            {'fill': {'none': True}, 'line': {'none': True}},
            {'fill': {'none': True}, 'line': {'none': True}},
            {'fill': {'none': True}, 'line': {'none': True}},
    ],
})

worksheet.insert_chart('E9', chart)

workbook.close()

在此处输入图像描述

这意味着您只能指示属于系列的一部分的标记,即 XlsxWriter 中没有用于向不属于系列的图表添加点的工具。

于 2013-06-04T07:43:55.603 回答