2014-11-15 2 views
-1

У меня есть данные в текстовом файле, подобном этому., чтобы получить трехмерный граф

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?

ответ

1

Да. Не особенно захватывающий граф, так как одна из переменных является константой, но определенно да.

Используемые модули: csv (для ввода) и matplotlib.pyplot (или pylab), чтобы на самом деле сделать сюжет.

Пожалуйста, взгляните на this demo для начала работы.

Если у вас возникли проблемы, вернитесь к SO еще один вопрос.

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() 
Смежные вопросы