使用matplotlib Polycollection保存日志空间d

2024-10-02 00:25:23 发布

您现在位置:Python中文网/ 问答频道 /正文

关于主题:Using matplotlib Polycollection to plot data from csv files。 我想让我的绘图,但与日志空间数据从x轴!你知道吗

我做了这个:

import matplotlib.pyplot as plt
from matplotlib.collections import PolyCollection
from mpl_toolkits.mplot3d import axes3d
import numpy as np

data1=eval(input())




freq_data =  np.logspace(-15,15,500)[:,None]*np.ones(10)[None,:]
amp_data = data1
rad_data = np.array([1,2,3,4,5,6,7,8,9,10])




verts = []
for irad in range(len(rad_data)):
      xs = np.concatenate([[freq_data[0,irad]], freq_data[:,irad], [freq_data[-1,irad]]])
      ys = np.concatenate([[0],amp_data[:,irad],[0]])
      verts.append(list(zip(xs, ys)))

poly = PolyCollection(verts)
poly.set_alpha(0.7)

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# The zdir keyword makes it plot the "z" vertex dimension (radius)
# along the y axis. The zs keyword sets each polygon at the
# correct radius value.
ax.add_collection3d(poly, zs=rad_data, zdir='y')

ax.set_xlabel('symlog')
ax.set_xlim(freq_data.min(), freq_data.max())
ax.set_xlabel('Frequency')

ax.set_ylim(rad_data.min(), rad_data.max())
ax.set_ylabel('Radius')
ax.set_zlim(amp_data.min(), amp_data.max())
ax.set_zlabel('Amplitude')

plt.show()

但我还是得不到我想要的。所以我想画出数据和频率的关系,频率是对数间隔的。你知道吗

附件是我的输入数据:https://www.dropbox.com/s/63gs0n365mal3t6/test_data.mat?dl=0 你可以下载并输入到程序中。你知道吗

注:我试过用随机数据代替输入,它确实给出了一个正确的图。所以,如果你想测试代码,请使用附加的数据。你知道吗


Tags: 数据fromimportdatamatplotlibnppltax

热门问题