How To Use a Colormap Using xlwings?

Method

NameDescriptionColor Bar
parulaGradient between blue, cyan, orange, and yellow
turboGradient between blue and red
hsvHue component variation in the HSV color model
hotGradient between black, red, orange, yellow, and white
coolGradient between cyan and magenta
springGradient between magenta and yellow
summerGradient between green and yellow
autumnGradient from red to orange-yellow, yellow
winterGradient between blue and green
grayLinear grayscale color lookup table
boneGray color lookup table with a higher blue component
copperGradient between black and bright copper
pinkGradient between magenta and white
skyGradient between white and sky blue
abyssGradient between deep blue and sky blue
jetGradient between blue, cyan, yellow, orange-red, and red

Example

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=False
    ax2.HasTitle=True
    ax2.AxisTitle.Text='Values'
    ax2.AxisTitle.Font.Size=10
    ax2.TickLabels.Font.Size=8
    ax2.HasMajorGridlines=False
    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('A2:B9').Select()
shp=sht.api.Shapes.AddChart2(-1,xw.constants.ChartType.xlColumnClustered,20,20,350,250,True)
cht=shp.Chart
cht.ChartGroups(1).GapWidth=50

cm=wb.sheets('parula').range('A1:C256').value

for i in range(8):
    count=int((i+1)/8*256)
    if count==256:
      r=int(cm[255][0])
      g=int(cm[255][1])
      b=int(cm[255][2])
    else:
      r=int(cm[count][0])
      g=int(cm[count][1])
      b=int(cm[count][2])

    cht.SeriesCollection(1).Points(i+1).Format.Fill. \
    ForeColor.RGB=xw.utils.rgb_to_int((r,g,b))

set_style(cht)

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


Leave a Reply

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