您的位置:首页 > 编程语言 > Python开发

Python:使用pycha快速绘制办公常用图二(使用样式定制个性化图表)

2012-02-29 00:07 1051 查看
在昨天的文章《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)


做一下单元测试:









内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: