openpyxl繪圖折線圖添加標記以及修改標題的大小去除線框


chart.x_axis.title = title_maker_x('距載荷中心距離/cm')
    chart.y_axis.title = title_maker_y('彎沉/μm')
    # 修改坐標值的位置
    # ['high', 'low', 'nextTo']
    # chart.y_axis.tickLblPos = 'high'
    # 控制坐標軸的位置
    # ['autoZero', 'max', 'min']
    # chart.y_axis.crosses = 'min'
    # 從左向右邊移動坐標軸
    # chart.y_axis.crossesAt = 5
    # ['b', 'l', 'r', 't']
    # chart.y_axis.axPos = 't'
    chart.style = 10
    # 布局
    chart.layout = char_Layout()
    chart.legend.position = 'b'
    # chart.legend.layout = leng_layout()
    # chart.legend.overlay = True

    # chart.x_axis = DateAxis(crossAx=100)
    # 去除圖形邊框
    chart.graphical_properties = GraphicalProperties(ln=LineProperties(noFill=True))
    if row_num > 10:
        chart.height = 9 + int(row_num // 5) * 2
        chart.width = 13.4 + int(row_num // 5) * 2
    else:
        chart.height = 9
        chart.width = 13.4

    chart.add_data(data, titles_from_data=True, from_rows=True)
    chart.set_categories(titles)
    chart.graphical_properties = GraphicalProperties(ln=LineProperties(noFill=True))
    # chart.graphical_properties.line.width = 12700

    # 去除x,y,z線條
    chart.y_axis.majorGridlines = None
    # 或者
    # chart.y_axis.majorGridlines.spPr = GraphicalProperties(noFill=True)
    # chart.y_axis.majorGridlines.spPr.ln = LineProperties(solidFill='ffffff')
    # 刻度線的顯示位置
    chart.y_axis.majorTickMark = 'in'  # ['cross:倆邊', 'in:內', 'out:外'] 不設沒有
    chart.x_axis.majorTickMark = 'in'  # ['cross:倆邊', 'in:內', 'out:外'] 不設沒有
    # 坐標軸的顏色
    chart.y_axis.spPr = GraphicalProperties(noFill=True)
    chart.y_axis.spPr.ln = LineProperties(solidFill='000000')
    chart.x_axis.spPr = GraphicalProperties(noFill=True)
    chart.x_axis.spPr.ln = LineProperties(solidFill='000000')
    font_test = Font(typeface='Times New Roman')
    # cp = CharacterProperties(latin=font_test, sz=1500)
    cp = CharacterProperties(latin=font_test)
    chart.y_axis.textProperties = RichText(p=[Paragraph(pPr=ParagraphProperties(defRPr=cp), endParaRPr=cp)])
    chart.x_axis.textProperties = RichText(p=[Paragraph(pPr=ParagraphProperties(defRPr=cp), endParaRPr=cp)])
    chart.y_axis.scaling.orientation = 'maxMin'  # 設置軸線方向 從大到小

    # chart.graphicalProperties.line.width = 100050
    alleries = chart.series
    # chart.marker = True
    img_ma = [
        'circle', 'diamond', 'square', 'triangle', 'x',
        # 'star','plus','auto', 'dash', 'dot',
    ]
    # chart.dLbls = DataLabelList()
    # chart.dLbls.showCatName = True  # 標簽顯示
    # chart.dLbls.showVal = True  # 數量顯示
    # chart.dLbls.showPercent = True  # 百分比顯示
    len_img_ma = len(img_ma)
    chars = '0123456789ABCDEF'

    all_color = [''.join(random.sample(chars, 6)) for i in range(len(alleries))]
    for index, ser in enumerate(alleries):
        ser.graphicalProperties.line.width = 12700
        # 平滑
        ser.smooth = True
        ser.marker.symbol = img_ma[int(index % len_img_ma)]
        ser.marker.size = 5
        # 添加標記
        # (['circle', 'dash', 'diamond', 'dot', 'picture',
        #                               'plus', 'square', 'star', 'triangle', 'x', 'auto']),
        # ser.marker.symbol = "x"
        # 標記內為顏色
        # ser.marker.graphicalProperties.solidFill = all_color[index] # Marker filling 
        ser.marker.graphicalProperties.noFill = True  # 無填充
        # 標記框顏色
        ser.marker.graphicalProperties.line.solidFill = all_color[index]  # Marker outline
        # 控制是否顯示線
        # ser.graphicalProperties.line.noFill = True
        ser.graphicalProperties.line.solidFill = all_color[index]

    anchor = 'L' + str(1 + img_postion_num * 20)
    ws.add_chart(chart, anchor)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM