You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

3D绘图Z轴对数化后小值可视化优化问询(ISSUE209已解决)

3D绘图Z轴对数刻度优化问题

我用CSV数据制作了一幅3D绘图,希望将Z轴设置为对数刻度,但发现仅能修改轴标签,无法调整轴的实际维度,相关实现代码如下:

import matplotlib
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import sys
import csv
import bbox
csvFileName = sys.argv[0]
csvData = []
with open('Ben*PAR_nh.csv', 'r') as csvfile:
 csvReader = csv.reader(csvfile, delimiter=',')
 for csvRow in csvReader:
     csvData.append(csvRow)
csvData = np.array(csvData)
csvData = csvData.astype(float)
X, Y, Z = csvData[:,0], csvData[:,1], csvData[:,2]
#change vmin and vmax values for colorbar range
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
cb = ax.plot_trisurf(X, Y, Z, cmap='coolwarm', alpha=0.75)
#cb = ax.plot_trisurf(X, Y, Z, cmap='coolwarm', alpha=0.75, vmin=0, 
vmax=800)
ax.scatter(X, Y, Z, c='red', marker='o')
fig.colorbar(cb, shrink=0.5)
ax.set_title("First-year sea ice PAR")
ax.set_xlabel("SZA")
ax.set_ylabel("Ice thickness")
ax.set_zlabel("µmol m$^{-2}$ $^{s-1}$")
ax.view_init(azim=70, elev=30)
image_format = 'png' # e.g .png, .svg, etc.
image_name = 'test.eps'
plt.show()
fig.savefig(image_name, format=image_format, dpi=1200)

经Jamie解答后,当前绘图已实现Z轴对数化,但Z轴数据范围约为5e-07至0.6,最小数值在当前刻度下难以看清,现询问是否有其他对数类型的优化方案,优化后的代码如下:

import matplotlib
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import sys
import csv
import bbox

csvFileName = sys.argv[0]
csvData = []
with open('parvalues.dat', 'r') as csvfile:
csvReader = csv.reader(csvfile, delimiter=',')
for csvRow in csvReader:
    csvData.append(csvRow)

csvData = np.array(csvData)
csvData = csvData.astype(float)
X, Y, Z = csvData[:,0], csvData[:,1], csvData[:,2]

#change vmin and vmax values for colorbar range
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
cb = ax.plot_trisurf(X, Y, Z, cmap='coolwarm', alpha=0.75)

#cb = ax.plot_trisurf(X, Y, Z, cmap='coolwarm', alpha=0.75, 
vmin=0, vmax=800)
ax.scatter(X, Y, Z, c='red', marker='o')


fig.colorbar(cb, shrink=0.5)

ax.set_title("First-year sea ice PAR")
ax.set_xlabel("SZA")
ax.set_ylabel("Ice thickness")
ax.set_zlabel("µmol m$^{-2}$ $^{s-1}$")
ax.view_init(azim=70, elev=30)

image_format = 'png' # e.g .png, .svg, etc.
image_name = 'test.eps'
tight_layout()

plt.show()
fig.savefig(image_name, format=image_format, dpi=1200)

内容的提问来源于stack exchange,提问作者benjamin Redmond Roche

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 18:36:40