2013-06-03 2 views
1

enter image description hereсоздать точку в графике с использованием xslwriter

Я способен генерировать график с помощью 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) 
+0

Не могли бы вы показать код, который вы написали? И что вы имеете в виду, поставив 4 точки на определенную ценность? – alecxe

+0

Извините за откаты - немного изменил редактирование :( –

+0

@alecxe, я имею в виду, нам нужно представить некоторый символ с определенным значением. Другими словами, он представляет собой пороговый уровень. Для Ex: (10.200) мы можем поместить некоторые символ на линии, чтобы пользователь мог легко определить пороговый уровень – user765443

ответ

2

В XlsxWriter не представляется возможным, чтобы включить отдельные маркеры точек в серии, но можно включить маркеры точек от для серии с маркерами. Для этого вам необходимо использовать опцию points (see docs) и отключить маркеры, которые вам не нужны.

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() 

enter image description here

Это означает, что вы можете указать только маркер, которые являются частью серии, то есть, нет никакого средства в XlsxWriter для добавления точки на график, который не является частью серии ,

Смежные вопросы