python中依赖于函数的折线图颜色

2024-04-26 21:36:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一组带记号的线。我想让这些标记在颜色图中淡出,比如说prism,取决于一个函数,它给出了它们的温度。这是我的代码:

def virial_temp(M=row1[i][2],z=row1[i][3]):
     X = 0.7
     Y = 0.3
     mu = 1/(2*X + 0.75*Y)   #from GL's code
     v_v = math.sqrt(G*M*m_sun/(virial_rad(M,z)*1E+3*parsec))      #virial velocity [m/s]
     return (mu*m_p*v_v**2/(2*k_b))


line1 = plt.plot([namei - len(row1)*0.5, namej - len(row2)*0.5],[row1[i][3]*10, row2[j][3]*10], c=plt.cm.jet(j), lw=2, marker='o', markerfacecolor=plt.cm.rainbow(virial_temp(M=row1[i][2],z=row2[j][3])), markersize=1.5) 

这只是我正在挣扎的markerfacecolor部分。假设温度很低(从函数返回的值为低),颜色将与colormap上的“first”颜色相同,如果tempreture非常高(从函数返回的值为high),则它将是colormap上的“last”颜色。有办法吗?在

任何帮助都会非常感谢,因为我已经在这个问题上挣扎了一段时间了!在

提前谢谢


Tags: 函数标记len颜色cmplt温度temp
1条回答
网友
1楼 · 发布于 2024-04-26 21:36:31

Check out this answer

下面是一些代码来演示我的建议:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.pyplot import cm
import random

maximum = 10

n = 10

def pick_color():
    closest_match = 10*maximum #arbitrary high number
    for item in color_pairs:
        if abs(item[0] - num) < closest_match: 
            closest_match = abs(item[0] - num)
            c = item[1]
    return c 

color = iter(cm.rainbow(np.linspace(0,1,n)))
color_pairs = [(value, c) for value, c in zip(range(n+1), color)]

Xs = [i for i in range(n+1)]
random_list = [random.choice(range(maximum +1)) for i in range(n+1)]


for x, num in zip(Xs,random_list):
    c = pick_color()    
    plt.scatter(x, num, s=50, c=c)

plt.show()

很明显,你想要一条线,等等,但是原理是一样的。在

相关问题 更多 >