用csv和土壤数据创建三维图表



你好吗?正如你所看到的,我对python非常陌生,我需要制作一个脚本,允许我打开csv文件并在3d中绘制它们。进入上下文,我们的想法是将图形分为X和Y,这将代表土壤测量部门,也就是说,我们定义在10公顷内制作20个样本,应该生成一个包含20个表格或地块的网格,其中Z将是每个土壤产品的测量本身,即9,(pH、温度、湿度、氮、钾、磷、盐度、tds、电导率(。我认为,对于视觉问题,最好一次看到一个值,而不是全部看到,也许可以选中复选框,单击要在图中看到的值。

关于数据的顺序,我认为x、y、val1、val2、val3、val4等是Z表示的值。

我启动了一个代码,但我无法将其用于CSV。

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import tkinter as tk
from tkinter import filedialog
#seccion para abrir archivos
root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename()
## PARSEO DE DATA EN EJES
x1, y1, z1 = np.loadtxt(file_path, delimiter=',', unpack=True) #'muestras.txt'
""""
X,Y = np.meshgrid(np.arange(10), np.arange(10))
Z = np.sin(X) + np.sin(Y)
x = X.flatten()
y = Y.flatten()
z = Z.flatten()
"""
X,Y = np.meshgrid(np.arange(10), np.arange(10))
Z = z1
x = x1
y = y1
x = X.flatten()
y = Y.flatten()
z = Z.flatten()
fig = plt.figure(figsize=(9,3.2))
plt.subplots_adjust(0,0.07,1,1,0,0)
ax = fig.add_subplot(121, projection='3d')
ax2 = fig.add_subplot(122, projection='3d')
ax.set_title("trisurf with color acc. to z")
ax2.set_title("surface with color acc. to x")
ax.plot_trisurf(x,y,z ,  cmap="magma")
colors =plt.cm.magma( (X-X.min())/float((X-X.min()).max()) )
ax2.plot_surface(X,Y,Z ,facecolors=colors, linewidth=0, shade=False )
ax.set_xlabel("x")
ax2.set_xlabel("x")
plt.show()

不要使用np.loadtxt加载CSV文件,而是尝试安装panda并使用内置的read_csv()

熊猫:https://pypi.org/project/pandas/

read_csv的文档:https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html

用pandas读取csv的示例:

import pandas as pd
dataframe = pd.read_csv(file_path)
# If you want all the data as np array:
np_values = dataframe.values

最新更新