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
相关产品推荐
相关产品推荐

