牛骨文教育服务平台(让学习变的简单)

Python:使用pycha快速绘制办公常用图二(使用样式定

在昨天的文章《Python:使用pycha快速绘制办公常用图(饼图、垂直直方图、水平直方图、散点图等七种图形)》中,讲述了使用pycha绘制各种办图常见图,今天学习了下如何定制这些图表的样式,在pycha模块的源码中,char.py文件中定义了默认的样式格式,如下:

DEFAULT_OPTIONS = Option(
    axis=Option(
        lineWidth=1.0,
        lineColor="#0f0000",
        tickSize=3.0,
        labelColor="#666666",
        labelFont="Tahoma",
        labelFontSize=9,
        labelWidth=50.0,
        tickFont="Tahoma",
        tickFontSize=9,
        x=Option(
            hide=False,
            ticks=None,
            tickCount=10,
            tickPrecision=1,
            range=None,
            rotate=None,
            label=None,
            interval=0,
            showLines=False,
        ),
        y=Option(
            hide=False,
            ticks=None,
            tickCount=10,
            tickPrecision=1,
            range=None,
            rotate=None,
            label=None,
            interval=0,
            showLines=True,
        ),
    ),
    background=Option(
        hide=False,
        baseColor=None,
        chartColor="#f5f5f5",
        lineColor="#ffffff",
        lineWidth=1.5,
    ),
    legend=Option(
        opacity=0.8,
        borderColor="#000000",
        borderWidth=2,
        hide=False,
        position=Option(top=20, left=40, bottom=None, right=None),
    ),
    padding=Option(
        left=10,
        right=10,
        top=10,
        bottom=10,
    ),
    stroke=Option(
        color="#ffffff",
        hide=False,
        shadow=True,
        width=2
    ),
    yvals=Option(
        show=False,
        inside=False,
        fontSize=11,
        fontColor="#000000",
        skipSmallValues=True,
        snapToOrigin=False,
        renderer=None
    ),
    fillOpacity=1.0,
    shouldFill=True,
    barWidthFillFraction=0.75,
    pieRadius=0.4,
    colorScheme=Option(
        name="gradient",
        args=Option(
            initialColor=DEFAULT_COLOR,
            colors=None,
            ),
    ),
    title=None,
    titleColor="#000000",
    titleFont="Tahoma",
    titleFontSize=12,
    encoding="utf-8",
)

有了它,我们可以根据自己的需要定义各种样式。

如下(代码中只列举了主函数,其他函数请见上篇博文):

if __name__ == "__main__":
    """
    Function:使用pycha画各种图表
    Input:NONE
    Output: NONE
    author: socrates
    blog:http://blog.csdn.net/dyx1024
    date:2012-02-29
    """
    #数据来源
    dataSet=( 
             ("iphone",((0,1),(1,3),(2,2.5))), 
             ("htc",((0,2),(1,4),(2,3))), 
             ("hw",((0,5),(1,1,),(2,0.5))), 
             ("zte",((0,3),(1,2,),(2,1.5))), 
            ) 
    
#    #图像属性定义
#    options={ 
#                "legend":{"hide":False}, 
#                "title":"手机销售量分布图(by dyx1024)",
#                "titleColor":"#0000ff",
#                "titleFont":"字体",
#                "background":{"chartColor": "#ffffff"}, 
#                "axis":{"labelColor":"#ff0000"},
#            } 
    
    #自定义样式
    options1={ 
       "axis": {
            "x": {                       #x轴
                "label": "month",        #标签名称
                "rotate": 25,            
            },
            "y": {                       #y轴
                "tickCount": 8,          #横线个数
                "rotate": 25,
                "label": "count"
            }
        },
        "background": {
            "chartColor": "#ffffff",     #图表背景色
            "baseColor": "#ffffff",      #边框颜色
            "lineColor": "#0000ff"       #横线颜色
        },
        "colorScheme": {
            "name": "gradient",
            "args": {
                "initialColor": "#CD3700", #图表颜色
            },
        },
        "legend": {
            "hide": True,     #是否隐藏图标示例
        },
        "padding": {
            "left": 10,       #左边框
            "bottom": 10,     #底边框
        },
        "title": "pychar test(by dyx1024)" #图片标题
            }     
        
    
    
    surface = set_charvalue()
    
    #根据需要调用不同函数画不同形状的图
    #draw_pie(surface, options, dataSet)
    #draw_vertical_bar(surface, options, dataSet)
    #draw_horizontal_bar(surface, options, dataSet)
    #draw_scatterplot(surface, options, dataSet)
    #draw_stackedverticalbarChar(surface, options, dataSet)
    #draw_stackedhorizontalbarChart(surface, options, dataSet)
    #draw_line(surface, options, dataSet)
    #draw_vertical_bar(surface, options1, dataSet)
    draw_line(surface, options1, dataSet)

做一下单元测试: