指定散点图中每个点的颜色(matplotlib)

时间:2015-10-22 17:36:19

标签: python matplotlib colors 3d scatter

我有一个使用matplotlib创建的3D绘图,我有一个与每个点对应的rbg值列表。

我有X,Y和Z数据,然后我有一个"颜色列表"形式:

[ (r,g,b), (r,g,b), ... , (r,g,b) ]

匹配每个(x,y,z)点。

现在,我有

fig = plt.figure()
ax = fig.add_subplot(111, projection = '3d')

ax.scatter(X, Y, Z)
plt.show()

合并这些rgb元组的适当方法是什么,以便为每个点分配特定的颜色?

3 个答案:

答案 0 :(得分:5)

我使用for循环为每个点单独分配每种颜色。这是我的代码:

X = [1, 2, 3]
Y = [2, 5, 8]
Z = [6, 4, 5]
colors=["#0000FF", "#00FF00", "#FF0066"]

fig = plt.figure()
ax = fig.add_subplot(111, projection = '3d')


for i in range(len(X)):
    ax.scatter(X[i], Y[i], Z[i], color=colors[i])
plt.show()

for循环逐点(因此在每个X,Y,Z值前面的[i])并逐一给出颜色。我在我的例子中使用了十六进制颜色,但如果你愿意的话,你可以使用别的东西。

答案 1 :(得分:5)

如果您不想使用for循环(对于大型列表来说可能非常慢)您可以使用散射命令和RGB颜色列表,但是您需要将颜色指定为RGB矢量(或RGBA)值介于0和1之间

<?php global $post; ?>

    <meta property="og:title" content="<?php 
    if(is_front_page()){
        echo get_bloginfo();
    }
    else
        echo the_title(); 

    ?>"/>
    <meta property="og:description" content="<?php echo "eda website" ; ?>"/>
    <meta property="og:type" content="article"/>
    <meta property="og:url" content="<?php 
    if(is_front_page())
        echo "http://eda-af.com";
    else    
        echo the_permalink(); 
    ?>"/>
    <meta property="og:site_name" content="<?php echo get_bloginfo(); ?>"/>
    <meta property="og:image" content="<?php
    if(is_front_page())
        echo "http://eda-af.com/wp-content/themes/mytheme/img/meta_logo.jpg";
    else
        $img_src = wp_get_attachment_image_src(get_post_thumbnail_id( $post->ID ), 'medium');
        echo $img_src[0]; 
    ?>"/>

3 colored points

答案 2 :(得分:2)

这里是一个示例,其中计算颜色而不是由文字列表指定颜色。

import matplotlib.pyplot as plt
import numpy as np

phi = np.linspace(0, 2*np.pi, 60)
x = np.sin(phi)
y = np.cos(phi)
rgb_cycle = np.vstack((            # Three sinusoids
    .5*(1.+np.cos(phi          )), # scaled to [0,1]
    .5*(1.+np.cos(phi+2*np.pi/3)), # 120° phase shifted.
    .5*(1.+np.cos(phi-2*np.pi/3)))).T # Shape = (60,3)

fig, ax = plt.subplots(figsize=(3,3))
ax.scatter(x,y, c=rgb_cycle, s=90)
fig.show()

color ring