首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python OpenPyxl是否删除散点图网格线?

Python OpenPyxl是否删除散点图网格线?
EN

Stack Overflow用户
提问于 2018-02-13 05:39:26
回答 2查看 2.7K关注 0票数 1

Python3和OpenPyxl版本2.3.2如何删除散点图网格线?

代码语言:javascript
运行
复制
from openpyxl.chart.axis import ChartLines

SCchart = ScatterChart()
SCchart.title = "Scatter Chart"
SCchart.style = 13
SCchart.x_axis.majorGridlines = False

给出错误: TypeError:期望的类'openpyxl.chart.axis.ChartLines‘

还有这个:

代码语言:javascript
运行
复制
SCchart.x_axis.ChartLines.majorUnit = False

给出错误: AttributeError:'NumericAxis‘对象没有属性'ChartLines’我要删除所有图表网格线。

EN

回答 2

Stack Overflow用户

发布于 2018-03-31 05:06:22

我无法在Openpyxl 2.51中做到这一点,甚至使用了一些技巧,比如将网格线设置为白色(十六进制的'FFFFFF')。我可以使用openpyxl接近于访问line参数,但是不能让它工作。我在这里介绍了我的努力,希望其他人能拿起球。巨蟒的要点:

代码语言:javascript
运行
复制
from openpyxl.chart.shapes import GraphicalProperties
# turn majorGridlines off using shapes.GraphicalProperties 
sgp = GraphicalProperties(solidFill='FFFFFF')  # White
chart.y_axis.majorGridlines.spPr = sgp

这是openpyxl写的XML:

代码语言:javascript
运行
复制
    <valAx>
        <axId val="2" />
        <scaling>
            <orientation val="minMax" />
            <min val="0" />
        </scaling>
        <axPos val="l" />
        <majorGridlines>
            <spPr>
                <a:solidFill>
                    <a:srgbClr val="FFFFFF" />
                </a:solidFill>
                <a:ln>
                    <a:prstDash val="solid" />
                </a:ln>
            </spPr>
        </majorGridlines>

当我打开openpyxl刚刚用Excel2010编写的电子表格时,主要的网格线仍然是深灰色的。我点击它们,将它们的颜色设置为白色,并使用新的文件名保存文件。下面是excel编写新的xml代码的方式:

代码语言:javascript
运行
复制
        <c:valAx>
            <c:axId val="83446016"/>
            <c:scaling>
                <c:orientation val="minMax"/>
                <c:min val="0"/>
            </c:scaling>
            <c:delete val="0"/>
            <c:axPos val="r"/>
            <c:majorGridlines>
                <c:spPr>
                    <a:ln>
                        <a:solidFill>
                            <a:schemeClr val="bg1"/>
                        </a:solidFill>
                        <a:prstDash val="solid"/>
                    </a:ln>
                </c:spPr>
            </c:majorGridlines>

因此,从逻辑上讲,您可能认为这个python可以工作(剧透了,不适合我!):

代码语言:javascript
运行
复制
chart.y_axis.majorGridlines.spPr.ln = sgp

正确的方法(微软使用的方法)是将网格线设置为NoFill。在excel中关闭网格线,保存文件并查看chart.xml文件会产生以下结果:

代码语言:javascript
运行
复制
    <c:valAx>
        <c:axId val="83031552"/>
        <c:scaling>
            <c:orientation val="minMax"/>
            <c:min val="0"/>
        </c:scaling>
        <c:delete val="0"/>
        <c:axPos val="r"/>
        <c:majorGridlines>
            <c:spPr>
                <a:ln>
                    <a:noFill/>
                    <a:prstDash val="solid"/>
                </a:ln>
            </c:spPr>
        </c:majorGridlines>

python应该类似于:

代码语言:javascript
运行
复制
sgp = GraphicalProperties(noFill=True)  # bonks, tried None also not effective
chart.y_axis.majorGridlines.spPr.ln = sgp

或者也许

代码语言:javascript
运行
复制
chart.y_axis.majorGridlines.spPr.ln.noFill = True

这也是因为在此openpyx1路径中没有ln或line。

票数 1
EN

Stack Overflow用户

发布于 2018-08-03 02:57:07

不确定之前的回答是否结束了这个帖子,但基于这些建议和一些调整,我能够为折线图启用/禁用网格线,添加数据标签。

使用了以下代码:

代码语言:javascript
运行
复制
from openpyxl.chart.shapes import GraphicalProperties

from openpyxl.drawing.line import LineProperties

from openpyxl.chart.axis import ChartLines

from openpyxl.chart.label import DataLabelList

c1.y_axis.majorGridlines.spPr = GraphicalProperties(noFill = 'True')

c1.y_axis.majorGridlines.spPr.ln = LineProperties(solidFill = '000000')

c1.x_axis.majorGridlines = ChartLines()

c1.x_axis.majorGridlines.spPr = GraphicalProperties(noFill = 'True')

c1.x_axis.majorGridlines.spPr.ln = LineProperties(solidFill = '000000')

c1.dLbls = DataLabelList()

c1.dLbls.showVal = 1

基本上,某些参数class需要分配给它们一个类实例,以便更改后续的子参数。对于ex。当您尝试将一个值设置为spPr时,返回的错误将指定它所需的类,然后您可以导入该类并将其实例分配给变量。除此之外,xml可以极大地帮助您确定哪些变量需要更改。希望这能帮上忙..

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48755936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档