簡體   English   中英

Matplotlib分散3D顏色

[英]Matplotlib scatter 3d colors

我的問題是我想用比其他所有點不同的顏色繪制此結構的0,0,0點,但是該圖僅以所選顏色顯示輪廓,並且該球的內部仍然與其他顏色相同。 我不明白這是怎么回事。

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np



fig = plt.figure()
ax = fig.gca(projection='3d')
ax.set_aspect("equal")

for x in range(-count,count+1):
    for y in range(-count,count+1):
        for z in range(-count,count+1):
            if x == 0 and y == 0 and z == 0:
                ax.scatter(x,y,z, color="g",s=100) #here is the problem
            elif ((x+y+z+3*count)%2) == 0:
                ax.scatter(*zip([x,y,z]), color="r")
            else:
                ax.scatter(*zip([x,y,z]), color="b")

     plt.show()

立方結構圖

您可以使用參數edgecolorfacecolor設置邊緣和面的顏色。

ax.scatter(x,y,z, s=100, edgecolor="r", facecolor="gold")

或者,您可以使用參數c直接設置顏色,

ax.scatter(x,y,z, s=100, c="limegreen")

或設置應通過色圖由顏色表示的值的范圍。 最后一種方法還可以將所有點放在單個散點圖中,如下所示:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.gca(projection='3d')
ax.set_aspect("equal")

count = 2
x = range(-count,count+1)
X,Y,Z = np.meshgrid(x,x,x)

c = np.zeros_like(X, dtype=np.float)
c[((X+Y+Z+3*count)%2) == 0] = 0.5
c[count,count,count] = 1

s = np.ones_like(X)*25
s[count,count,count] = 100
ax.scatter(X,Y,Z, c=c,s=s, cmap="brg")

plt.show()

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM