我在绘制三维电势等值线时遇到了麻烦。
我测量了2d箔上电子之间的电压降,保存为一个文本文件。
总共620个点的数据是在20*30cm的区域(它是620而不是600,因为我包括了第0列),这仅仅是箔的右上四分之一(所以总的箔尺寸是60*40cm,但是我只取了右上四分之一,假设箔会有对称的电压差,所以我可以在其他地方生成其余的数据点季度后)。测量从右上角(第20行,第31列)开始,沿着同一行,直到到达第0列,然后移回(第19行,第31列),再次沿行移动,直到到达第0列,然后返回(第18行,第31列),依此类推。这部分并不重要,但我写这篇文章只是为了给你提供更详细的信息。在
然后在python上,我试图将这个1D数据点变成(20,31)的数组形状。所以z[1]将是我的行[0]的整个列的数据点。在
我使用meshgrid生成x和y坐标的2D数组。
但是,当我试图绘制(x,y,z)时,会出现一个错误
“ValueError:第三个参数必须是格式字符串”
我试着自己解决这个问题,但不仅我不明白错误的含义,而且我已经浪费了足够的时间(将近4小时)。在
伙计们,请帮帮我,。同样,在弄清楚这一点之后,任何关于如何制作这些数据的对称版本的提示也将非常感谢。在
提前谢谢你。在
下面是代码和数据纺织#this code is written to plot 3d contour of electric potential
#############################################################################
#import module
from numpy import *
from pylab import *
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
#############################################################################
#read in textfile
V = loadtxt('march6_2d_foli.txt')
V_len = len(V) #length of data
#############################################################################
#create zeros for the electric potential
row=20
column = 31 #size of the top right quotient of 2d foil
z = zeros((row,column))
#x and y coordinates
x = array(range(column))
y = array(range(row))
xx,yy = meshgrid(x,y) #meshgrid for plotting 3d contour
#assigning V on each xy-plane
i = V_len-1 #iterate from backward due to the way that data was taken
for j in range(row):
#print j
for k in range(column):
#print k
z[j,k] = V[i]
i= i-1
#plot 3d contour of potential
fig=figure()
ax =Axes3D(fig)
ax.plot(xx,yy,z)
show()
3月6日_对开.txt在
^{pr2}$