用python绘制三维图形

2024-06-16 13:28:35 发布

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

我正在尝试使用下面的python代码绘制数据以创建一个3D图形。当我运行程序时,我只得到一个没有任何图形(绘图)的空框。谁能帮我一下编码哪里出错了? 我还很难将Excel文件(xlsx)转换为csv,python需要这些文件来创建数据图形。我在下面尝试过,但没有成功:

  1. 在Excel中打开文件并将其保存在csv中(将文件扩展名更改为csv,但数据不以逗号分隔)
  2. 在记事本中打开xslx-->;另存为-->;选择所有文件并另存为csv。扩展名更改为csv,同样没有逗号,数据作为原始xslx文件保留在单元格中

我希望能就这两个问题提供一些建议

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt

plt.style.use('seaborn-white')

#********************** Entering the data automatically **********************
#File name
filename='T1T2Map_OW.csv'
data_raw = pd.read_csv(filename)

#Split and organize the data
#Relaxation Time T2
T2 = pd.DataFrame(data_raw, columns=['T2'])
T2 = np.array(T2,dtype=float)

#Relaxation Time T1
T1 = pd.DataFrame(data_raw, columns=['T1'])
T1 = np.array(T1,dtype=float)

#Brine Before CO2
Increm_Poro_Dead_Brine = pd.DataFrame(data_raw, columns=['Increm_Poro_Dead_Brine'])
Increm_Poro_Dead_Brine = np.array(Increm_Poro_Dead_Brine,dtype=float)

#************************** PLOT FOR DEAD BRINE *************************

fig1 = plt.figure(num=1,dpi=120)

N1 = int(len(Increm_Poro_Dead_Brine)**.5)
z1 = Increm_Poro_Dead_Brine.reshape(N1, N1)

at1 = plt.imshow(z1, interpolation = 'bilinear', extent=(-2, 4, -2, 4), origin="lower", aspect 
= 1, cmap='hsv')

plt.xlabel('Relaxation Time $T_2$ (ms)', weight='bold')
plt.ylabel('Relaxation Time $T_1$ (ms)', weight='bold')
plt.xticks(fontsize=9)
plt.yticks(fontsize=9)
plt.draw()
ax1 = plt.gca()
lbx1 = ax1.get_xticklabels()
lby1 = ax1.get_yticklabels()
for i in range(len(lbx1)):
    lbx1[i]._text = r'$10^{' + lbx1[i]._text + '}$'
for i in range(len(lby1)):
    lby1[i]._text = r'$10^{' + lby1[i]._text + '}$'
ax1.set_xticklabels(lbx1)
ax1.set_yticklabels(lby1)

cbar1 = plt.colorbar(at1)#, shrink=0.67)
cbar1.set_label ('Incremental Porosity (fraction)', weight='bold', rotation=270, labelpad=12)

plt.show()
fig1.savefig('Fig01_T1T2_DEAD_BRINE(AUBY).jpg', format='jpeg', dpi=600, bbox_inches='tight')

Tags: 文件csv数据datapltpdt1dead