Как я могу применить более двух категорий (ось X) в XlsxWirter? - PullRequest
1 голос
/ 26 марта 2020

Я хотел бы нарисовать диаграмму, используя 2 разных категории (ось X) с 1 значением (ось Y) на одном графике. Но в настоящее время я не смог получить 2 разных графика на одной фигуре.

x1 = [6.60 ,6.87 ,7.06 ,6.62 ,7.28]
x2 = [4.29 ,5.14 ,5.34 ,4.57 ,4.81]
p1 = [30.95 ,30.93 ,31.13 ,30.98 ,31.17 ]

worksheet.write_column('A1', x1)
worksheet.write_column('B1', x2)

# categories
worksheet.write_column('C1', p1)

chart1 = workbook.add_chart({'type': 'line'})

chart1.add_series ({
    'categories' : '=Sheet1!$A$1:$A$5',
    'values' : 'Sheet1!$C$1:$C$5',
    'line':   {'none': True},
    'marker': {'type': 'automatic'},  
})

chart1.add_series ({
    'categories' : '=Sheet1!$B$1:$B$5',
    'values' : 'Sheet1!$C$1:$C$5',
    'line':   {'none': True},
    'marker': {'type': 'automatic'},  
})

worksheet.insert_chart('E1,' , chart1)

enter image description here

Я ожидаю получить выше цифры. Однако, когда я запускаю код, я получил рисунок ниже. Это занимает только первые Категории (ось X), и я не мог видеть другую. Это нарисовано в той же точке для оси X. Есть ли способ понять это как на рисунке выше?

enter image description here

1 Ответ

1 голос
/ 26 марта 2020

Это поведение по умолчанию для линейных диаграмм в Excel. Я думаю, что вы ищете, это точечная диаграмма. Вот пример с установленным диапазоном оси Y:

from xlsxwriter import Workbook

workbook = Workbook('test.xlsx')
worksheet = workbook.add_worksheet()

x1 = [6.60 ,6.87 ,7.06 ,6.62 ,7.28]
x2 = [4.29 ,5.14 ,5.34 ,4.57 ,4.81]
p1 = [30.95 ,30.93 ,31.13 ,30.98 ,31.17 ]

worksheet.write_column('A1', x1)
worksheet.write_column('B1', x2)

worksheet.write_column('C1', p1)

chart1 = workbook.add_chart({'type': 'scatter'})
chart1.set_y_axis({'min': 22, 'max': 32})

chart1.add_series ({
    'categories' : '=Sheet1!$A$1:$A$5',
    'values' : 'Sheet1!$C$1:$C$5',
    'line':   {'none': True},
    'marker': {'type': 'automatic'},  
})

chart1.add_series ({
    'categories' : '=Sheet1!$B$1:$B$5',
    'values' : 'Sheet1!$C$1:$C$5',
    'line':   {'none': True},
    'marker': {'type': 'automatic'},  
})

worksheet.insert_chart('E1,' , chart1)

workbook.close()

Выход : enter image description here

...