在昨天的文章[《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://box.kancloud.cn/2016-06-08_57579356eb5a8.gif)
![](https://box.kancloud.cn/2016-06-08_575793570c033.gif)
![](https://box.kancloud.cn/2016-06-08_57579357242e0.gif)
![](https://box.kancloud.cn/2016-06-08_5757935735e85.gif)
![](https://box.kancloud.cn/2016-06-08_5757935750c98.gif)
- 前言
- Python:实现文件归档
- Pyhon:按行输出文件内容
- Python:读文件和写文件
- Python:实现一个小算法
- Python:通过命令行发送新浪微博
- Python:通过摄像头实现的监控功能
- Python:通过摄像头抓取图像并自动上传至新浪微博
- Python:简单的摄像头程序实现
- Python:日志模块logging的应用
- Python:操作嵌入式数据库SQLite
- Python:将句子中的单词全部倒排过来,但单词的字母顺序不变
- Python:语音处理,实现在线朗读RFC文档或本地文本文件
- Python:通过计算阶乘来学习lambda和reduce这两个函数的使用
- Python:通过执行100万次打印来比较C和python的性能,以及用C和python结合来解决性能问题的方法
- Python:使用matplotlib绘制图表
- Python:使用pycha快速绘制办公常用图(饼图、垂直直方图、水平直方图、散点图等七种图形)
- Python:使用pycha快速绘制办公常用图二(使用样式定制个性化图表)
- Python:监控键盘输入、鼠标操作,并将捕获到的信息记录到文件中
- Python:通过获取淘宝账号和密码的实验,来看登陆方式选择的重要性
- Python:通过获取淘宝账号和密码的实验,来看登陆方式选择的重要性(二)
- Python:通过远程监控用户输入来获取淘宝账号和密码的实验(一)
- Python:通过远程监控用户输入来获取淘宝账号和密码的实验(二)
- Python:通过自定义系统级快捷键来控制程序运行
- Python:通过自定义系统级快捷键来控制程序开始或停止记录日志(使用小技巧解决一个貌似无解的问题)
- Python:一个多功能的抓图工具开发(附源码)
- Python:程序发布方式简介一(打包为可执行文件EXE)
- Python:新浪微博应用开发简介(认证及授权部分)
- Python:程序最小化到托盘功能实现
- Python:实用抓图工具开发介绍(含需求分析、设计、编码、单元测试、打包、系统测试、发布各环节)
- Python:桌面气泡提示功能实现
- Python:未来三个月的python学习计划
- Python:pygame模块及SDL库简介
- Python:获取新浪微博用户的收听列表和粉丝列表
- Python:pygame游戏编程之旅一(Hello World)
- Python:pygame游戏编程之旅二(自由移动的小球)
- Python:pygame游戏编程之旅三(玩家控制的小球)
- Python:pygame游戏编程之旅四(游戏界面文字处理)
- Python:pygame游戏编程之旅五(游戏界面文字处理详解)
- Python:pygame游戏编程之旅六(游戏中的声音处理)
- Python:pygame游戏编程之旅七(pygame基础知识讲解1)
- Python:编程“八荣八耻”之我见
- Python:脚本的几种执行方式
- wxPython:简单的wxPython程序
- wxPython:简单的wxPython程序的另一种写法
- wxPython:应用程序对象介绍
- wxPython:输出重定向
- wxPython:关闭wxPython程序
- wxPython:Frame类介绍
- wxPython:面板Panel的使用
- wxPython:工具栏、状态栏、菜单实现
- wxPython:消息对话框MessageDialog
- wxPython:文本对话框TextEntryDialog
- wxPython:列表选择框SingleChoiceDialog
- wxPython:事件处理介绍一
- wxPython:事件处理介绍二
- wxPython: 简单的绘图例子
- wxPython:状态栏介绍
- wxPython:菜单介绍
- wxPython:文件对话框wx.FileDialog
- wxPython:颜色选择对话框wx.ColourDialog
- wxPython:布局管理器sizer介绍
- wxPython:启动画面SplashScreen介绍
- wxPython:绘画按钮BitmapButton介绍
- wxPython:进度条Gauge介绍
- Python: 发送新浪微博(使用oauth2)
- Python:读取新浪微博收听列表
- Python:DNS客户端实现