Создайте линейную диаграмму из двух несмежных столбцов

#excel #charts #line #pywin32

#превосходить #Диаграммы #линия #pywin32

Вопрос:

Я должен создать линейную диаграмму из первого и третьего столбцов листа с тремя столбцами.

Например

 Gender Responses Index Female 325 2.52 Male 243 3.15 Other 127 4.21  

то есть значения должны быть взяты из индекса, а метки-из пола. Поэтому я написал

 chart = excel.Charts.Add(After=wb.Sheets(wb.Sheets.Count)) chart.Name = "LineChart" chart.Type = win32c.xlLine chart.HasTitle = True chart.ChartTitle.Text = "Just a title" chart.SetSourceData(dist_ws.Range("A1:A4", "C1:C4"))  

но это не работает. Диапазон получает все три столбца, и в любом случае я получаю исключение. Я тоже пытался

 chart.SetSourceData(dist_ws.Range("A1:A4, C1:C4"))  

и

 chart.SetSourceData(dist_ws.Range("A2:A4, C1:C4"))  

но это не работает. Поэтому мне нужно отдельно задать исходные данные (в C2:C4 с именем серии в C1) и метки оси X (в A2:A4).

Есть идеи, что я делаю не так?

Комментарии:

1. Догадка, но попробуй dist_ws.Range("A1:A4,C1:C4"))

2. Я постараюсь дать тебе знать. Спасибо.

3. Нет. Это не работает. Мне нужно найти, чтобы установить отдельно значения и метки категорий оси X для линейного графика.

Ответ №1:

Я решил эту проблему совершенно по-другому:

 # FIRST, I create a new sheet to allocate chart chart_ws = wb.Sheets.Add(After=wb.Sheets(wb.Sheets.Count)) chart_ws.Name = "Anyname"  # SECOND, I add a line chart in it chart_ws.Shapes.AddChart2(-1, win32c.xlLineMarkers, 0, 0, 560, 320).Select() chart = wb.ActiveChart chart.HasTitle = True chart.ChartTitle.Text = "Any title"  # THIRD, I create a series for data series = chart.SeriesCollection().NewSeries()  # FOURTH, I set the two ranges for labels and values # Warning: ranges do NOT includes headers (A1 and C1) # A1 is used to name the series series.XValues = dist_ws.Range("A2:A4") series.Values = dist_ws.Range("C2:C4") series.Name = dist_ws.Range("A1").Value  

Это работает.