java 中使用 python外部扩展包pycha
2016-04-01 10:58
756 查看
因为大作业要求使用java完成,我却作死的想用pycha,于是进行了一系列摸索。以下分享一下成果
使用java调用python有大概三种方法,这个网上都可以查到,但是对于有外部扩展包的python脚本,只有一种方法可以运行,另外两种都会报错说 no module named xxx。
arg是你需要传递的参数,鉴于arg是数组的形式,于是我将数据形式存储为一维数组,奇数项为下标,偶数为数值(虽然不太合理,但是暂时没有想到别的方法)
2.于是将test.java 写成如下:
3.接下来需要写test.py来接收参数并且画出pycha的图表
![](https://img-blog.csdn.net/20160401105732889)
4.test.py的脚本目录下会产生testpie.png,在java中就可以使用了。
建议单独放在一个文件夹中,在程序退出时,清空图片缓存。
使用java调用python有大概三种方法,这个网上都可以查到,但是对于有外部扩展包的python脚本,只有一种方法可以运行,另外两种都会报错说 no module named xxx。
Process process = Runtime.getRuntime().exec(arg);
arg是你需要传递的参数,鉴于arg是数组的形式,于是我将数据形式存储为一维数组,奇数项为下标,偶数为数值(虽然不太合理,但是暂时没有想到别的方法)
2.于是将test.java 写成如下:
String[] a = { "2005", "1000", "2006", "2000", "2007", "1500", "2008", "2340" }; String[] arg = new String[] { "C:\\Python27\\python.exe", "pycha-0.7.0\\examples\\test.py" }; int alength = a.length; int arglength = arg.length; arg = Arrays.copyOf(arg, alength + arglength);// 扩容 System.arraycopy(a, 0, arg, arglength, alength);// 将第二个数组与第一个数组合并 Process process = Runtime.getRuntime().exec(arg);
3.接下来需要写test.py来接收参数并且画出pycha的图表
import sys import cairo from pycha.pie import PieChart print "script name:", sys.argv[0] i=1; list = [] while i<len(sys.argv): print "Parameter:", i, sys.argv[i] list.append((sys.argv[i], [[0, float(sys.argv[i + 1])]])) #奇数项为下标,偶数项为数值,添加进list中 i = i + 2 surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 400, 400) chart = PieChart(surface) dataSet = tuple(list) #将list转化为tuple chart.addDataset(dataSet) #设置数据 chart.render() surface.write_to_png("testpie.png")#生成图表
4.test.py的脚本目录下会产生testpie.png,在java中就可以使用了。
建议单独放在一个文件夹中,在程序退出时,清空图片缓存。
相关文章推荐
- 初学python(对比java语言不同) 第一篇
- python psutil监控进程
- python语言学习2——安装python
- leetcode-06-zigzag conversion-python
- Python之类
- python常用绘图软件包记录
- python中数据的保存
- 利用Anaconda安装python后,如何安装opencv-python
- Python/Keras如何将给定的数据集打乱
- Python如何进行cross validation training
- Python常用函数
- Python如何读取指定文件夹下的所有图像
- python相关的工具
- 开始学习Python
- python pexpect
- Python脚本执行MySQL语句时停住
- [置顶] win10安装Python出现问题解决方法
- numpy.ndarray.flat/flatten 与 Spark 下的 flatMap
- Day3、Python
- python学习笔记(session)