Как настроить отображение данных по оси X для кадра данных pandas с помощью xlsxwriter - PullRequest
1 голос
/ 25 июня 2019

Я пытаюсь создать сюжет в Excel, используя xlsxwriter с python3 и pandas. Как заставить xlsxwriter использовать столбец pubyear для значений x_axis?

Я могу успешно построить график, используя matplotlib, но мне нужно создать Excel-диаграммы.

Этот код

n [248]: df1.describe
Out[248]: 
<bound method NDFrame.describe of          africa
pubyear        
2018      57371
2017      70838
2016      66250
2015      58572
2014      52453
2013      46733
2012      42521
2011      38851
2010      33463
2009      29603
2008      25947
2007      22573
2006      19188
2005      16701>

writer = pd.ExcelWriter('/tmp/pandas_simple.xlsx', engine='xlsxwriter')

# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel(writer, sheet_name='Sheet1')
workbook  = writer.book
worksheet = writer.sheets['Sheet1']
chart = workbook.add_chart({'type': 'column'})

# Configure the series of the chart from the dataframe data.
chart.add_series({'values': '=Sheet1!$D$1:$D$15'})
chart.set_x_axis({'name': 'Pubyear', 'min': '=Sheet1!$A$2', 
                  'max':  '=Sheet1!$A$14', 
                  "date_axis" : "=Sheet1!$A$2:$A15$" })
chart.set_y_axis({'name': 'Output'})
worksheet.insert_chart('I2', chart)

writer.save()


создал файл, содержащий эти данные в электронной таблице, где pubyear находится в столбце A, а africa в столбце B:

  A       B
pubyear africa
2018    57371
2017    70838
2016    66250
2015    58572
2014    52453
2013    46733
2012    42521
2011    38851
2010    33463
2009    29603
2008    25947
2007    22573
2006    19188
2005    16701

На графике показана гистограмма с ось x: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Я хочу, чтобы pubyear, как в столбце A, было х-метками.

1 Ответ

1 голос
/ 19 июля 2019

Когда вы добавляете серию, вы одновременно добавляете категории (pubyear)

chart.add_series({'categories':'=Sheet1!$A$2:$A$15'
                   'values': '=Sheet1!$B$2:$B$15'})
...