在ipython中设置色阶

2024-04-29 19:13:13 发布

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

我是python新手,很难找到正确的语法来使用。 我想把一些超新星的数据绘制到锤子投影图上。数据有坐标α和β。对于每个数据点,还有一个值delta来描述SN的属性。 我想创建一个色阶,从最小值的增量到最大值的增量,从红色到紫色。 这意味着,当我绘制数据时,我可以简单地写下:

子批次(111,投影=“锤子”)

p=绘图([alpha],[beta],'o',mfc='delta')

其中delta代表的是光谱中介于红色和紫色之间的颜色。一、 如果delta=0,则标记为红色,如果delta=delta max,则标记为紫色,如果delta=(delta)。max)/2标记为黄色。在

有人能帮我解释一下语法吗?在

非常感谢

安吉拉


Tags: 数据标记属性语法绘制增量maxdelta
3条回答

我不熟悉绘图,但是生成彩虹颜色的一个很好的方法是使用HSV(色调、饱和度、值)颜色空间。设置色调和饱和度的最大值。在

import colorsys

def color(value):
    return colorsys.hsv_to_rgb(value / delta.max / (1.1), 1, 1)

这会给你带来彩虹色的RGB三色。(1.1)在紫罗兰城结束最大增量而不是一路回到红色。 因此,不必从列表中选择,而是调用函数。在

如果返回的颜色太亮,也可以尝试尝试饱和度和值(上面函数中的1)。在

如果您正在考虑一个固定颜色表,只需将delta值映射到该表的索引范围中。例如,可以使用打印包识别的颜色名称构造颜色表:

>>> colors = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet']

在您的示例中,可能的delta值的范围是0到{}。将其映射到颜色表的长度,得到step

^{pr2}$

获得与给定data点匹配的颜色名称所需的计算是:

>>> color = colors[math.trunc(data / step)]

此方法适用于任何预选颜色集,例如以十六进制数表示的RGB值。在

谷歌快速搜索发现了Johnny Lin's Python Library。它包含color maps,包括^{}。 你还需要他的^{}(根据可见光的波长计算RGB值)。请注意,此库将颜色生成为RGB三元组-您必须计算出打印库对这些颜色值的期望值。在

下面的代码使用Johnny Lin的Python库的wavelon2rgb函数(正如gimel所建议的那样),将SNs绘制成填充圆。代码使用了Python中始终可用的Tkinter。你可以得到小波2rgb.pyhere。在

def sn():
    "Plot a diagram of supernovae, assuming wavelengths between 380 and 645nm."
    from Tkinter import *
    from random import Random
    root = Tk()                 # initialize gui
    dc = Canvas(root)           # Create a canvas
    dc.grid()                   # Show canvas
    r = Random()                # intitialize random number generator
    for i in xrange(100):       # plot 100 random SNs
        a = r.randint(10, 400)
        b = r.randint(10, 200)
        wav = r.uniform(380.0, 645.0)
        rgb = wavelen2rgb(wav, MaxIntensity=255)  # Calculate color as RGB
        col = "#%02x%02x%02x" % tuple(rgb)        # Calculate color in the fornat that Tkinter expects
        dc.create_oval(a-5, b-5, a+5, b+5, outline=col, fill=col) # Plot a filled circle
    root.mainloop()
sn()

输出如下:

alt text http://img38.imageshack.us/img38/3449/83921879.jpg

相关问题 更多 >