X和Y轴分别作为第1列和第2列的图表

时间:2019-12-10 15:04:41

标签: python python-2.7 openpyxl

请参考下图:

enter image description here

使用下面的代码,我得到第一个图形,但我需要的是第二个图形。请让我知道我哪里错了

import openpyxl

xfile = openpyxl.load_workbook("chart.xlsx")
sheet = xfile["Chart"]
c = openpyxl.chart.LineChart()

c.title = "Graph"
c.style = 1

c.y_axis.title = 'Time'
c.x_axis.title = 'WF'

data = openpyxl.chart.Reference(sheet, min_col=1, min_row=1, max_col=2, max_row=sheet.max_row)
c.add_data(data, titles_from_data=True)

sheet.add_chart(c, "C1")
xfile.save("chart.xlsx")

1 个答案:

答案 0 :(得分:0)

您的问题尚不完全清楚。 我想您的问题只是关于X轴,而不是图表的样式。

要获取“相同”图表,您必须设置X轴的标签,并从第一列中选​​择这些值。

    import openpyxl

    chart_directory = "chart.xlsx"

    xfile = openpyxl.load_workbook(chart_directory)
    sheet = xfile["Chart"]
    c = openpyxl.chart.LineChart()

    c.title = "Graph"
    c.style = 2

    c.y_axis.title = 'Time'
    c.x_axis.title = 'WF'

    #Select the lables to set
    labels = openpyxl.chart.Reference(sheet, min_col=1, min_row=2, max_row=sheet.max_row, max_col=1)
    #Select the values to set
    data = openpyxl.chart.Reference(sheet, min_col=2, min_row=1, max_row=sheet.max_row)

    #Set the values
    c.add_data(data, titles_from_data=True)
    #Set the labels
    c.set_categories(labels)

    sheet.add_chart(c, "C1")
    xfile.save(chart_directory)

在此示例代码中,您可以看到我从第二行到最后一行选择标签作为第一列。 之后,您可以选择要从第1行打印为第2列的值(这样它将保留该系列的图例名称)直到最后一行。

您必须在图表中设置数据,然后设置标签。