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)
';