得到三维图

时间:2014-11-15 07:26:31

标签: python matplotlib

我在这样的文本文件中有数据。

a   b       kseq
613 42023   20
762 32557   20
323 63163   20
643 60877   20
422 32740   20
394 48891   20
744 105341  20
334 58036   20
303 27343   20
861 33608   20

是否可以在matplotlib中从这个二维数据创建三维图形?

2 个答案:

答案 0 :(得分:1)

是。不是一个特别令人兴奋的图表,因为其中一个变量是常数,但绝对是。

涉及的模块是csv(用于输入)和matplotlib.pyplot(或pylab)来实际绘制。

请开始使用this demo了解。

如果您遇到麻烦,请使用其他问题返回SO。

答案 1 :(得分:1)

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d, Axes3D
from scipy.interpolate import griddata

a = [[613, 42023, 20], [762, 32557, 20], [323, 63163,20], [643, 60877, 20],
 [422, 32740, 20], [394,48891, 20], [744, 105341,20], [334, 58036,20],
 [303,27343,20], [861,33608,20]]
df = pd.DataFrame(a, columns=['a', 'b', 'kseq']) # create dataframe not neccessary
X = df.a
Y = df.b
Z = df.kseq
fig = plt.figure(figsize=plt.figaspect(0.5))
ax = fig.gca(projection='3d')
xi = np.linspace(X.min(), X.max(), 100)
yi = np.linspace(Y.min(), Y.max(), 100)
zi = griddata((X, Y), Z, (xi[None, :], yi[:, None]), method='linear')    # create a  uniform spaced grid
xig, yig = np.meshgrid(xi, yi)  # create pair of x, y
surf = ax.plot_surface(xig, yig, zi, rstride=5, cstride=3, linewidth=0, cmap=plt.cm.coolwarm, antialiased=False)   # 3d plot
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()