首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用于在球面上显示数据的配色方案

用于在球面上显示数据的配色方案
EN

Stack Overflow用户
提问于 2018-06-04 04:59:23
回答 1查看 187关注 0票数 0

我有一个数据集,我将其投影到球面上,使得数据的大小,作为θ和φ的函数,使用彩色光谱(使用"ax.plot_surface","plt.colorbar“和"facecolors")来显示。我的疑问是,在这个阶段,我只能使用"cm.hot“和"cm.jet”。有没有人知道有任何其他的配色方案可用于此目的。请看我的代码和下面的图

代码:

代码语言:javascript
复制
from numpy import*
import math
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.cm as cm

#theta inclination angle
#phi azimuthal angle
n_theta = 100 #number of values for theta
n_phi = 100  #number of values for phi
r = 1       #radius of sphere

theta, phi = np.mgrid[0: pi:n_theta*1j,-pi:pi:n_phi*1j ]

x = r*np.sin(theta)*np.cos(phi)
y = r*np.sin(theta)*np.sin(phi)
z = r*np.cos(theta)

inp = []
f = open("data.dat","r")
for line in f:
    i = float(line.split()[0])
    j = float(line.split()[1])
    val = float(line.split()[2])
    inp.append([i, j, val])

inp = np.array(inp)

#reshape the input array to the shape of the x,y,z arrays. 
c = inp[:,2].reshape((n_phi,n_theta))

#Set colours and render
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')
#use facecolors argument, provide array of same shape as z
# cm.<cmapname>() allows to get rgba color from array.
# array must be normalized between 0 and 1
surf = ax.plot_surface(
    x,y,z,  rstride=1, cstride=1, facecolors=cm.jet(c), alpha=0.9, linewidth=1, shade=False) 
ax.set_xlim([-2.0,2.0])
ax.set_ylim([-2.0,2.0])
ax.set_zlim([-2,2])
ax.set_aspect("equal")

plt.title('Plot with cm.jet')

#Label axis. 
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')

#Creates array for colorbar from 0 to 1. 
a = array( [1.0, 0.5, 0.0])

#Creates colorbar
m = cm.ScalarMappable(cmap=cm.jet)
m.set_array(a)
plt.colorbar(m)
plt.savefig('facecolor plots')

f.close()
plt.show()

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50670921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档