python-docx(python-pptx)图表编程技术

背景

上一篇文档:为python-docx增加chart支持(使用python-pptx库)中,介绍了给docx文档添加图表支持,但是,python-pptx中的图表编程接口功能有限,一些属性无法直接修改。下面介绍几种方法,实现对图表呈现的更多美化。
基于上篇文档的样例:

from docx import Document
from pptx.chart.data import CategoryChartData
from pptx.util import Inches
from pptx.enum.chart import XL_CHART_TYPE

doc = Document()

labels = ["1月", "2月", "3月"]
data = [25, 33, 18]
chart_data = CategoryChartData()
chart_data.categories = labels
chart_data.add_series("季度销售", data)
x, y, cx, cy = Inches(2), Inches(2), Inches(6), Inches(3)
chart = doc.add_chart(XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data)


doc.save("t.docx")

去除图表边框

添加图表时,默认会有边框,python-pptx没有直接设置是否显示边框的功能,可以如下操作:

    from lxml import etree
    xml = '<c:spPr><a:ln w="0"><a:noFill/></a:ln></c:spPr>'
    parser = etree.XMLParser(recover=True)
    element = etree.fromstring(xml, parser)
    chart._chartSpace.append(element)

在这里插入图片描述

设置中文字体

python-pptx设置坐标轴或标签为中文字体时可能无效,造成实际字体显示有问题。可按如下修改:

def set_font(font, font_name):
    font.name = font_name
    east = font._rPr.find(qn("a:ea"))
    if east is not None:
        east.set("typeface", font.name)
    else:
        element = font._rPr.makeelement(qn("a:ea"))
        element.set("typeface", font.name)
        font._rPr.append(element)

category_axis = chart.category_axis
set_font(category_axis.tick_labels.font, u'楷体')
category_axis.tick_labels.font.size = Pt(9)

在这里插入图片描述

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值