gpt4 book ai didi

python - 使用 matplotlib Polycollection 绘制 csv 文件中的数据

转载 作者:太空宇宙 更新时间:2023-11-03 18:03:39 25 4
gpt4 key购买 nike

我一直在尝试使用 PolyCollection 制作一个与此非常相似的图表: http://matplotlib.org/examples/mplot3d/polys3d_demo.html

不同之处在于,我希望我的代码从文件夹中读取所有 CSV 文件并绘制其中的数据(不是随机数)。每个 CSV 文件包含一个谱图,即两列和一定数量的行。我希望第一行是我的 x 值,第二行是相应的 z 值。

我尝试过这个:

import os
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import PolyCollection

fig=plt.figure()
ax = fig.gca(projection='3d')

input_path = 'input'
spectrumfiles = []
verts=[]

for root, dirs, files in os.walk(input_path):
for name in files:
if os.path.splitext(name)[1] == '.CSV' or os.path.splitext(name)[1] == '.csv':
spectrumfiles.append(os.path.join(root,name))

zs = np.arange(len(files))

for name in spectrumfiles:
spectrum = np.loadtxt(name, delimiter=',')
#xs = spectrum[:,0] #I tried this first but then realised that "spectrum
#ys = spectrum[:,1] #already has the needed shape
#verts.append(list(zip(xs,ys)))

verts.append(spectrum)



poly = PolyCollection(verts, facecolors=np.ones(len(verts))) #I'm not too bothered with
poly.set_alpha(0.7) #colours at the moment
ax.add_collection3d(poly, zs=zs, zdir='y')

plt.show()

现在,我得到的图表是空的。

编辑:这里有 4 个样本 FILES

编辑2:以下是 stackoverflow 上相关问题的一些链接。 -Matplotlib plot pulse propagation in 3d -Waterfall plot python?

最佳答案

好的,很容易修复 - 您唯一的问题是,因为您自己将 PolyCollection 添加到轴,所以它不会自动将 x/y/z 限制缩放到适当的值(仍然显示在 0 和 1 之间)。对于您拥有的数据,如果添加以下行:

ax.set_xlim(0,5000)
ax.set_ylim(0,len(spectrumfiles))

然后你的数据就会神奇地出现。

data visible now

关于python - 使用 matplotlib Polycollection 绘制 csv 文件中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27267683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com