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

最后更新于:2022-04-01 19:39:59

在昨天的文章[《Python:使用pycha快速绘制办公常用图(饼图、垂直直方图、水平直方图、散点图等七种图形)》](http://blog.csdn.net/dyx1024/article/details/7300497)中,讲述了使用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) ~~~ 做一下单元测试: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-08_57579356eb5a8.gif) ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-08_575793570c033.gif) ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-08_57579357242e0.gif) ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-08_5757935735e85.gif) ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-08_5757935750c98.gif)
';