Python生成2D数据并用Veusz绘图

今天实现了使用Python绘图并保存为csv数据格式,然后将csv导入到veusz绘图。导出数据并单独绘图的意义在于,比如说使用蒙特卡洛方法处理数据然后得到一些二维图形,由于它包括了随机数据,同时还需要保证所得图像可以再编辑。这遇到了两个问题,如果每次都使用程序重新生成图像,由于随机数据所以不能保证每次数据都严格一致。同时,不同的期刊对图片格式有不同的要求,所以就需要图片可以再编辑,这种编辑不是Photo式的编辑,它需要确保清晰度,根据要求生成完全相同的图片,所以必须有数据保存下来,每次都使用绘图软件来处理数据才能得到一致的结果。

Python 生成Mandelbrot 集并保存为 csv文件

mandelbrot to csv
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#! /usr/bin/env python3
# vim:fenc=utf-8
#
import numpy as np
import matplotlib.pyplot as plot
from pylab import *
import pandas as pd

x0=0 #初始值z0的x0
y0=0 #初始值z0的y0
zoom=1.0 #放大倍率
N=100 #最大迭代次数
R=2 #迭代半径
a=4.0 #绘制图的横轴大小
b=3.0 #绘制图的纵轴大小
step=0.005 #绘制点的步长

def iterate(c,N,R):
z=c
for i in range(N):
if abs(z)>R:
return i
z = z*z+c
return N

x=np.arange(-a/(2.0*zoom)+x0,a/(2.0*zoom)+x0,step)
y=np.arange(b/(2.0*zoom)+y0,-b/(2.0*zoom)+y0,-step)
cx,cy=np.meshgrid(x, y)
c = cx + cy*1j
ufunc=np.frompyfunc(iterate,3,1)
z=ufunc(c,N,R).astype(np.float64)

z = pd.DataFrame(z)
z.to_csv('test.csv')

Veusz 导入 csv 数据并绘图

  • 启动veuszDataImport...Browse...找到刚刚生成的test.csv,→2D 来到对话框:
2D数据导入对话框
  • 点击右下角import,成功导入数据。在软件右侧可以看到
2D数据成功导入
  • 软件左侧,点击graph1,在工具栏中点击image图标,如图
点击image图标
  • FileExport...,弹出导出对话框,保存为png图像:
Mandelbrot集

参考资料