小编Flu*_*tor的帖子

使用Python和wxPython的3D/4D图形?

在我作为博士生的日常工作中,我做地质建模.在业余时间(主要是为了好玩),我正在学习Python并尝试编写一个简单的程序来查看3D地理细胞模型.

地质模型http://img710.imageshack.us/img710/6503/sgems.png geo model2 http://img638.imageshack.us/img638/529/1sblockmodel.jpg

地理细胞模型只是一个3D网格,其中每个网格单元都有一些值(如右图所示).所以,我希望我的观察者能够像右侧的图片一样显示3D网格模型.同样,我希望它能够在x,y和z方向上显示模型的横截面(如左图所示).

我还希望模型能够围绕所有三个轴旋转并放大和缩小.

我做了一些初步调查(主要是在这里),似乎VisVis和VTK是两个潜在的选择.我试图使用wxPython作为主GUI,看起来这两个选项将与wxPython一起使用,据我所知.

问题:

  1. 当我说我认为VisVis和VTK可以满足我的需求时,我是对的吗?一个比另一个好吗?

  2. 这两个选项中哪一个最容易实现?

  3. 还有其他选择我还应该考虑吗?

请记住,我是Python的新手,也是wxPython的新手.

python 3d graphics wxpython vtk

14
推荐指数
3
解决办法
4808
查看次数

输出的格式字符串取决于变量

我想有一个Fortran写语句格式化依赖于某些变量.例如,我可以写:

write(*,'(3f15.3,3f9.2)') x,y,z,(var(i),i=1,nvari)
Run Code Online (Sandbox Code Playgroud)

哪里nvari = 3.但是,如果在某些情况下,我实际上有4个变量(即nvari = 4).我想写这样的东西:

write(*,'(3f15.3,nvari(f9.2))') x,y,z,(var(i),i=1,nvari)
Run Code Online (Sandbox Code Playgroud)

现在,nvari可以是任何东西,输出将按我喜欢的方式工作.我怎样才能做出类似这样的工作?

formatting fortran fortran90 intel-fortran

13
推荐指数
3
解决办法
2万
查看次数

matplotlib:一个图上的多个图

我有一些代码:

import matplotlib.pyplot as plt

def print_fractures(fractures):
    xpairs = []
    ypairs = []
    plt.figure(2)
    plt.subplot(212)
    for i in range(len(fractures)):
        xends = [fractures[i][1][0], fractures[i][2][0]]
        yends = [fractures[i][1][1], fractures[i][2][1]]
        xpairs.append(xends)
        ypairs.append(yends)
    for xends,yends in zip(xpairs,ypairs):
        plt.plot(xends, yends, 'b-', alpha=0.4)
    plt.show()


def histogram(spacings):
    plt.figure(1)
    plt.subplot(211)
    plt.hist(spacings, 100)
    plt.xlabel('Spacing (m)', fontsize=15)
    plt.ylabel('Frequency (count)', fontsize=15)
    plt.show()

histogram(spacings)    
print_fractures(fractures)
Run Code Online (Sandbox Code Playgroud)

此代码将生成以下输出: 图.1

我的问题是:

1)为什么要创建两个单独的数字?我认为subplot命令会将它们组合成一个图形.我以为它可能是多个plt.show()命令,但我尝试将这些命令注释掉,只从我的函数外部调用一次,我仍然有两个窗口.

2)如何将它们正确地组合成1个数字?另外,我希望图2的轴具有相同的比例(即,x轴上的400米与y轴上的400米的长度相同).同样,我也想垂直拉伸直方图 - 这是如何实现的?

python plot matplotlib

8
推荐指数
1
解决办法
2万
查看次数

matplotlib 3D散点图,其标记颜色对应于RGB值

我使用mahotas将图片加载到一个numpy数组中.

import mahotas
img = mahotas.imread('test.jpg')
Run Code Online (Sandbox Code Playgroud)

每个像素img由RGB值数组表示:

img[1,1] = [254, 200, 189]
Run Code Online (Sandbox Code Playgroud)

我在一个轴上制作了R值的3D散点图,在第二个轴上制作了G值,在第三个轴上制作了B值.这没问题:

fig = plt.figure()
ax = fig.add_subplot(111, projection = '3d')
for i in range(1,img.shape[1]+1):
    xs = img[i,1][0]
    ys = img[i,1][1]
    zs = img[i,1][2]
    ax.scatter(xs, ys, zs, c='0.5', marker='o')
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')

plt.show()
Run Code Online (Sandbox Code Playgroud)

(我只是暂时绘制图像的第一列).

如何根据每个图像像素的颜色为每个散点图点着色?即我想我想用RGB值对点进行着色,但我不确定这是否可行?

python matplotlib scatter-plot

8
推荐指数
1
解决办法
6652
查看次数

Ipython/pylab/matplotlib绘图错误

我已经安装了Enthought的EPD(Windows 7为64位).

我正在尝试使用Yahoo的API绘制历史股票报价数据.我试图使用的所有代码都在这篇博客文章中:http: //www.traineetrader.com/importing-stock-data-from-yahoo-using-python/

ystockquote.py文件工作正常.

但是用于绘制谷歌历史股票报价的第二个脚本对我来说并不适用.这是代码(来自网站):

import ystockquote

# Get Quotes 01/01/2006 - 01/01/2009
GOOG = ystockquote.get_historical_prices('GOOG', '20060101', '20090101')

# Create empty lists, quick and dirty
GOOGOpen = [ ]
GOOGClose = [ ]
GOOGDate = [ ]
GOOGHigh = [ ]
GOOGLow = [ ]
GOOGAdj = [ ]
GOOGVolume = [ ]

# Populate lists from downloaded data
for i in range(1, 755):
    GOOGDate.append(GOOG[i][0])
    GOOGOpen.append(GOOG[i][1])
    GOOGHigh.append(GOOG[i][2])
    GOOGLow.append(GOOG[i][3])
    GOOGClose.append(GOOG[i][4])
    GOOGVolume.append(GOOG[i][5])
    GOOGAdj.append(GOOG[i][6])

plot(GOOGAdj)
title("Google Adjusted Close")
ylabel(r"GOOG Closing …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib ipython scipy

5
推荐指数
1
解决办法
5255
查看次数

Python字符串操作,在html标记之间提取文本

我有一个字符串:

<font face="ARIAL,HELVETICA" size="-2">  
JUL 28         </font>
Run Code Online (Sandbox Code Playgroud)

(它输出超过两行,因此必须有一个\n.

我希望提取<font></font>标签之间的字符串.在这种情况下,它是JUL 28,但它可能是另一个日期或其他数字.

1)从字体标签之间提取值的最佳方法是什么?我想我可以在之间抽取一切"></.

编辑:删除第二个问题.

html python string parsing

5
推荐指数
2
解决办法
3万
查看次数

python:检测字符串中的负数

所以我有一些像这样的行的文本文件:

STRT .M                 -9.0:  START DEPTH
Run Code Online (Sandbox Code Playgroud)

我希望检测到负数并将其替换为0.1.

我可以通过寻找' - '来检测负数

text.count('-')
Run Code Online (Sandbox Code Playgroud)

如果text.count(' - ')> 0,则为负数.

我的问题是:如何用数字0.1替换字符串中的'-9.0'?最终,我想输出:

STRT .M                  0.1:  START DEPTH
Run Code Online (Sandbox Code Playgroud)

python string

3
推荐指数
1
解决办法
3541
查看次数

熊猫替换数据框单元格值

我有一个数据框,其中某些单元格具有类似“ <0.5”的字符串。

我想遍历整个数据帧,对于包含小于号的任何单元格,我想用0.0替换整个单元格。

因此,例如<0.4变为0.0

编辑以添加一些代码:

df = pd.read_csv(infl)
for i in range(df.shape[0]):
    for j in range(df.shape[1]):
        if "<" in df.ix[i,j]:
            df.ix[i,j] = 0.0
Run Code Online (Sandbox Code Playgroud)

产生错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\00Working\81_WinPython_32bit_2.7.5.3\python-2.7.5\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 538, in runfile
    execfile(filename, namespace)
  File "Z:/working/MINING/2015/01_read_data.py", line 24, in <module>
    if "<" in df.ix[i,j]:
TypeError: argument of type 'numpy.int64' is not iterable
Run Code Online (Sandbox Code Playgroud)

此代码也不起作用:

df = pd.read_csv(infl)
for i in range(df.shape[0]):
    for j in range(df.shape[1]):
        if '<' in df.iloc[i][j]:
            df[i,j] = 0.0 …
Run Code Online (Sandbox Code Playgroud)

python pandas

3
推荐指数
1
解决办法
3197
查看次数

无法将CSV数据读入Pandas数据帧(Python/Pandas)

我在将一些csv数据读入pandas数据框时遇到了一些麻烦.这是我的数据:

C1,            C2,              C3,              C4,            C5,  
5.0010254,     12,            0.37,          1.2672,        2039.5,
5.0499756,     12,            0.37,          1.2672,        2039.5,
5.1000244,     12,            0.37,          1.2672,        2039.5,
5.1500122,     12,            0.37,          1.2672,        2039.5,
5.2,           12,            0.37,          1.2672,        2039.5,
5.2499878,     12,            0.37,          1.2672,        2039.5,
5.2999756,     12,            0.37,          1.2672,        2039.5,
5.3500244,     12,            0.37,          1.2672,        2039.5,
5.4000122,     12,            0.37,          1.2672,        2039.5,
5.45,          12,            0.37,          1.2672,        2039.5,
5.4999878,     12,            0.37,          1.2672,        2039.5,
Run Code Online (Sandbox Code Playgroud)

如您所见,数据以逗号分隔,但在逗号后面还有很多空格.我不知道这是不是什么给我带来麻烦,但如果我说:

infl = pd.read_csv('filename.txt', sep=",", header=1, na_values=["-999"])
print infl['C2']
Run Code Online (Sandbox Code Playgroud)

我收到错误:

KeyError: 'C2'
Run Code Online (Sandbox Code Playgroud)

我已经尝试了read_csv命令,有没有明确定义分隔符而没有成功.任何帮助表示赞赏!

python csv pandas

2
推荐指数
1
解决办法
205
查看次数

无法将基本的Ruby on Rails应用程序推送到Heroku

我正在完成Rails教程的第一章.我把first_app推到了heroku.起初我得到了sqlite3错误(我认为).但是,我编辑了gemfile并再次将其推送到heroku.但是,我没有得到与以下相同的页面:http://railstutorial.org/ruby-on-rails-tutorial-book#sec:1.4.3(我认为它应该看起来像1.4节中的图1.11. 3)

相反,我得到了这个:http://blooming-samurai-546.heroku.com/

它只是说:Heroku | 欢迎使用您的新应用!如果需要帮助部署,请参阅文档.

我做错了对吗?有什么想法吗?

ruby-on-rails heroku ruby-on-rails-3

1
推荐指数
1
解决办法
2424
查看次数