Python 在xlsxwriter中自定义X轴和Y轴值

Python 在xlsxwriter中自定义X轴和Y轴值,python,xlsxwriter,Python,Xlsxwriter,我已经写了一个小脚本,它使用xlsxwriter模块生成图形。它默认为x轴和y轴的值。我想自定义这些值。谁能告诉我如何解决这个问题。到目前为止,对于X轴,它需要-300到300,Y轴0到300,但是我正在寻找Y轴-100,间隔为2到100,X轴为0到-100,间隔为100 谢谢您的回复。刚刚编辑了我的问题,如x轴和y轴[-100,98…0100] 编辑另一个问题:我们可以放大或缩小由创建的图形吗 xlsx书写器 一个选项是,更改Excel公式,但它也会更改图形,对我不起作用。 或者换句话说,我可

我已经写了一个小脚本,它使用xlsxwriter模块生成图形。它默认为x轴和y轴的值。我想自定义这些值。谁能告诉我如何解决这个问题。到目前为止,对于X轴,它需要-300到300,Y轴0到300,但是我正在寻找Y轴-100,间隔为2到100,X轴为0到-100,间隔为100

谢谢您的回复。刚刚编辑了我的问题,如x轴和y轴[-100,98…0100]

编辑另一个问题:我们可以放大或缩小由创建的图形吗 xlsx书写器

一个选项是,更改Excel公式,但它也会更改图形,对我不起作用。 或者换句话说,
我可以放大现有的excel图表吗

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='SUM_F_SCDLIB_DFF')
    workbook = Workbook('graphs.xlsx')
    worksheet = workbook.add_worksheet()
    worksheet.set_zoom(100)
    worksheet.set_print_scale(400)

    heading =['d2clksu0','clk2q0_S','clk2q1_S','clk2q0_H','clk2q1_H']
    worksheet.write_row('A1',heading)
    count =2
    base_list = []
    while(count < worksheet_final.get_highest_row()):
        data_x = worksheet_final.cell(row = count, column = 1).value
        data_s0 = 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,data_x)
        worksheet.write(count,1,data_s0)
        worksheet.write(count,2,data_s1)
        worksheet.write(count,3,data_d0)
        worksheet.write(count,4,data_d1)
        base_list.append(round(data_x,0))
        count = count + 1
    # Create a new chart with properties object.
    chart = workbook.add_chart({'type': 'scatter',
                                'subtype': 'smooth'})
    chart.show_hidden_data()
    chart.set_high_low_lines()
    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$2:$B$503',
    'name':'clk2q0_S',
    'line':{'color':'blue'}})

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

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

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

    #Create Table
    table_heading_percentage = table_percentage
    table_heading = [ table_heading_percentage,'CK-D','CK-Q']
    table_column = ['D1_SU','D0_SU','D0_HD','D1_HD']
    format = workbook.add_format()
    format.set_font_color('blue')
    format.set_font_size(10)
    format.set_bold()
    worksheet.write_row(2,5,table_heading,format)
    worksheet.write_column(3,5,table_column,format)
    list_key = ['setup_mt1', 'setup_mt0', 'hold_mt0', 'hold_mt1']
    row = 3
    for key in list_key:
        column = 6
        worksheet.write(row,column,table_threashold[key][0])
        worksheet.write(row,column + 1,table_threashold[key][1])
        row = row + 1


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

if __name__ == '__main__':
    table_percentage = "5%"
    table_threashold = {}
    table_threashold ['setup_mt1'] = [-127,97]
    table_threashold ['setup_mt0'] = [-105,140]
    table_threashold ['hold_mt0'] = [-39,143]
    table_threashold ['hold_mt1'] = [-41,96]
    headline = """graph"""

    graph(headline,table_percentage,table_threashold)
从openpyxl导入加载\u工作簿
从xlsxwriter.工作簿导入工作簿
输入数学
def图表(标题、表格百分比、表格标题):
“”“创建图表”“”
wb=load_工作簿(文件名='sample.xlsx')
工作表\u final=wb。按名称获取工作表(name='SUM\u F\u SCDLIB\u DFF')
工作簿=工作簿('graphs.xlsx')
工作表=工作簿。添加工作表()
工作表。设置缩放(100)
工作表。设置打印比例(400)
标题=['d2clksu0'、'clk2q0_S'、'clk2q1_S'、'clk2q0_H'、'clk2q1_H']
工作表。写入行('A1',标题)
计数=2
基本列表=[]
而(计数<工作表\最终。获取最高的\行()):
数据\u x=工作表\u final.cell(行=计数,列=1).value
数据\u s0=工作表\u最终单元格(行=计数,列=2)。值
数据\u s1=工作表\u最终单元格(行=计数,列=8)。值
数据\u d0=工作表\u最终单元格(行=计数,列=14)。值
数据\u d1=工作表\u最终单元格(行=计数,列=20)。值
工作表。写入(计数,0,数据x)
工作表。写入(计数,1,数据\u s0)
工作表。写入(计数2,数据1)
工作表。写入(计数,3,数据\u d0)
工作表。写入(计数,4,数据)
基本列表。追加(四舍五入(数据x,0))
计数=计数+1
#使用properties对象创建新图表。
图表=工作簿。添加图表({'type':'scatter',
“子类型”:“平滑”})
图表.显示隐藏的数据()
图表.设置\u高\u低\u线()
cellname=标题
chart.set_title({'name':cellname})
图表.设置x轴({'name':'CLK-D时间(ps)',
'name_font':{'size':14,'bold':True},
})
图表.设置y轴({'name':'CLK-Q Time(ps)',
'name_font':{'size':14,'bold':True},
})
图表.设置大小({'width':720,'height':576})
#向图表中添加一个系列。
chart.add_系列({
“类别”:“=Sheet1!$A$2:$A$503”,
“值”:“=Sheet1!$B$2:$B$503”,
'name':'clk2q0_S',
'行':{'color':'blue'}})
chart.add_系列({
“类别”:“=Sheet1!$A$2:$A$503”,
“值”:“=Sheet1!$C$2:$C$503”,
“名称”:“clk2q1_”,
'行':{'color':'red'}})
chart.add_系列({
“类别”:“=Sheet1!$A$2:$A$503”,
“值”:“=Sheet1!$D$2:$D$503”,
'name':'clk2q0_H',
'行':{'color':'blue'}})
chart.add_系列({
“类别”:“=Sheet1!$A$2:$A$503”,
“值”:“=Sheet1!$E$2:$E$503”,
'name':'clk2q1_H',
'行':{'color':'red'}})
#创建表
表标题百分比=表百分比
表标题=[表标题百分比,'CK-D','CK-Q']
表列=['D1_-SU'、'D0_-SU'、'D0_-HD'、'D1_-HD']
格式=工作簿。添加格式()
格式。设置字体颜色(“蓝色”)
格式。设置字体大小(10)
format.set_bold()
工作表。写入行(2,5,表格标题,格式)
工作表。填写列(3,5,表格列,格式)
list_key=['setup_mt1'、'setup_mt0'、'hold_mt0'、'hold_mt1']
行=3
对于输入列表\ U键:
列=6
工作表.写入(行、列、表\u threshold[key][0])
工作表.写入(行、列+1,表\u threshold[key][1])
行=行+1
#将图表插入工作表。
工作表.插入图表('K1',图表)
工作簿.关闭()
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
表_percentage=“5%”
表_threashold={}
表\u threshold['setup\u mt1']=[-127,97]
表\u threshold['setup\u mt0']=[-105140]
表\u threshold['hold\u mt0']=[-39143]
表[U threashold['hold\U mt1']=[-41,96]
标题=“图形”
图表(标题、表格百分比、表格标题)
使用和方法:


要使用轴上的间隔,请查看“大单位”

下面是上面的基本示例,将y轴上的间隔从“自动”(在本例中等于2)更改为4:

import xlsxwriter

workbook = xlsxwriter.Workbook('chart.xlsx')
worksheet = workbook.add_worksheet()

# Create a new Chart object.
chart = workbook.add_chart({'type': 'column'})

# Write some data to add to plot on the chart.
data = [
    [1, 2, 3, 4, 5],
    [2, 4, 6, 8, 10],
    [3, 6, 9, 12, 15],
]

worksheet.write_column('A1', data[0])
worksheet.write_column('B1', data[1])
worksheet.write_column('C1', data[2])

# Configure the chart. In simplest case we add one or more data series.
chart.add_series({'values': '=Sheet1!$A$1:$A$5'})
chart.add_series({'values': '=Sheet1!$B$1:$B$5'})
chart.add_series({'values': '=Sheet1!$C$1:$C$5'})

# major_unit sets the interval for the axis, overriding the default of 'auto'
chart.set_y_axis({'major_unit': 4})

# Insert the chart into the worksheet.
worksheet.insert_chart('A7', chart)

workbook.close()

感谢回复,但它将设置最大值和最小值。我在寻找区间值。若你们看这个图,它是0-100,但有可能给出值0,2,4,…100。我想不出这需要多长时间
import xlsxwriter

workbook = xlsxwriter.Workbook('chart.xlsx')
worksheet = workbook.add_worksheet()

# Create a new Chart object.
chart = workbook.add_chart({'type': 'column'})

# Write some data to add to plot on the chart.
data = [
    [1, 2, 3, 4, 5],
    [2, 4, 6, 8, 10],
    [3, 6, 9, 12, 15],
]

worksheet.write_column('A1', data[0])
worksheet.write_column('B1', data[1])
worksheet.write_column('C1', data[2])

# Configure the chart. In simplest case we add one or more data series.
chart.add_series({'values': '=Sheet1!$A$1:$A$5'})
chart.add_series({'values': '=Sheet1!$B$1:$B$5'})
chart.add_series({'values': '=Sheet1!$C$1:$C$5'})

# major_unit sets the interval for the axis, overriding the default of 'auto'
chart.set_y_axis({'major_unit': 4})

# Insert the chart into the worksheet.
worksheet.insert_chart('A7', chart)

workbook.close()