How To Create Sliding Bead Chart Using xlwings? 2

Example

Code

import xlwings as xw
import os

def set_style(cht):
    cht.ChartArea.Format.Line.Visible=False
    cht.PlotArea.Format.Fill.Visible = False
    cht.PlotArea.Format.Line.Visible = True
    cht.PlotArea.Format.Line.ForeColor.RGB=xw.utils.rgb_to_int((200,200,200))
    #cht.PlotArea.Format.Line.ForeColor.ObjectThemeColor = msoThemeColorText1
    ax1 = cht.Axes(1)
    ax2 = cht.Axes(2)
    ax1.HasTitle = True
    ax1.AxisTitle.Text = 'Categories'
    ax1.AxisTitle.Font.Size = 10
    ax1.TickLabels.Font.Size = 8
    #ax1.TickLabels.NumberFormat = '0.00'
    ax1.HasMajorGridlines = True
    ax1.HasMinorGridlines = True
    ax2.HasTitle = True
    ax2.AxisTitle.Text = 'Values'
    ax2.AxisTitle.Font.Size = 10
    ax2.TickLabels.Font.Size = 8
    ax2.HasMajorGridlines = True
    ax2.HasMinorGridlines = True
    cht.HasTitle = True
    #cht.ChartTitle.Caption = 'Plot'
    #cht.ChartTitle.Font.Size = 12

root=os.getcwd()
app=xw.App(visible=True,add_book=False)
wb=app.books.open(root+r'/data.xlsx',read_only=False)
sht=wb.sheets('Sheet1')

sht.api.Range('B2:C12').Select()  #数据
shp=sht.api.Shapes.AddChart2(-1, xw.constants.ChartType.xlXYScatter, 30, 20, 230, 380, True)
cht=shp.Chart  #添加图表

count=cht.SeriesCollection().Count
if count>0:
    for i in range(count,0,-1):
        cht.SeriesCollection(i).Delete()

cht.SeriesCollection().NewSeries()
cht.SeriesCollection(1).ChartType=xw.constants.ChartType.xlXYScatter
cht.SeriesCollection(1).XValues=sht.api.Range("B2:B12")
cht.SeriesCollection(1).Values=sht.api.Range("D2:D12")
  
cht.SeriesCollection().NewSeries()
cht.SeriesCollection(2).ChartType=xw.constants.ChartType.xlXYScatter
cht.SeriesCollection(2).XValues=sht.api.Range("C2:C12")
cht.SeriesCollection(2).Values=sht.api.Range("D2:D12")

cht.Axes(1).MinimumScale=0.04
cht.Axes(1).MaximumScale=0.28
cht.Axes(2).MinimumScale=0
cht.Axes(2).MaximumScale=12

set_style(cht)

cht.Export(root+'/cht.jpg')
cht.Export(root+'/cht.svg')
cht.ExportAsFixedFormat(0,root+'/cht.pdf')

#wb.save()
#app.kill()
May 20, 2026 (0)


Leave a Reply

Your email address will not be published. Required fields are marked *