簡體   English   中英

如何使用openpyxl在excel圖表中僅顯示一個數據標簽?

[英]How to show only one data label in excel chart using openpyxl?

我下面的代碼使用openpyxl創建一個簡單的Excel工作表和一個圖表(代碼來自文檔 -編輯以解釋需求)

from datetime import date

from openpyxl import Workbook
from openpyxl.chart import (
    LineChart,
    Reference,
)
from openpyxl.chart.axis import DateAxis
from openpyxl.chart.label import DataLabelList
wb = Workbook()
ws = wb.active

rows = [
    ['Date', 'Batch 1', 'Batch 2', 'Batch 3'],
    [date(2015,9, 1), 41, 30, 25],
    [date(2015,9, 2), 41, 25, 30],
    [date(2015,9, 3), 41, 30, 45],
    [date(2015,9, 4), 41, 25, 40],
    [date(2015,9, 5), 41, 35, 30],
    [date(2015,9, 6), 41, 40, 35],
]

for row in rows:
    ws.append(row)

c1 = LineChart()
c1.title = "Line Chart"
c1.style = 13
c1.y_axis.title = 'Size'
c1.x_axis.title = 'Test Number'

data = Reference(ws, min_col=2, min_row=1, max_col=4, max_row=7)
c1.add_data(data, titles_from_data=True)

s2 = c1.series[2]
s2.smooth = True # Make the line smooth

c1.dataLabels = DataLabelList()
###########################################################
#Display data label and series name
#I need this to be displayed only for the first data point
#I can do this in excel by displaying the label only for the
#data point required

c1.dataLabels.showVal = True
c1.dataLabels.showSerName = True

ws.add_chart(c1, "A10")

wb.save("line.xlsx")

圖表我得到

在此處輸入圖片說明

我想要的圖表-如何獲得這樣的圖表?

在此處輸入圖片說明

僅顯示一個數據點的標簽(系列名稱和值)...

我得到了這個工作,這是帶有解釋的代碼:

from datetime import date

from openpyxl import Workbook
from openpyxl.chart import (
    LineChart,
    Reference,
)
from openpyxl.chart.axis import DateAxis
from openpyxl.chart.label import DataLabelList
from openpyxl.chart.label import DataLabel

wb = Workbook()
ws = wb.active

rows = [
    ['Date', 'Batch 1', 'Batch 2', 'Batch 3'],
    [date(2015,9, 1), 41, 30, 25],
    [date(2015,9, 2), 41, 25, 30],
    [date(2015,9, 3), 41, 30, 45],
    [date(2015,9, 4), 41, 25, 40],
    [date(2015,9, 5), 41, 35, 30],
    [date(2015,9, 6), 41, 40, 35],
]

for row in rows:
    ws.append(row)

c1 = LineChart()
c1.title = "Line Chart"
c1.style = 13
c1.y_axis.title = 'Size'
c1.x_axis.title = 'Test Number'

data = Reference(ws, min_col=2, min_row=1, max_col=4, max_row=7)
c1.add_data(data, titles_from_data=True)

#Get the first series
s1 = c1.series[0]
#Initialize data lables
s1.dLbls = DataLabelList()
#Initialize data label
dl = DataLabel()
#Set properties
dl.showVal = True
dl.showSerName = True
#position t for top
dl.position = "t"
#Append data label to data lebels
s1.dLbls.dLbl.append(dl)
#This produces expected result
ws.add_chart(c1, "A10")

wb.save("line.xlsx")

結果

在此處輸入圖片說明

仍然無法設置標簽文本屬性!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM