2017-04-02 15 views
2

我想根據作爲整數列表給出的顏色代碼的輸入製作具有多種顏色的線段。例如,假定存在包含顏色代碼根據編碼特定顏色的整數列表在Python中製作多個彩色線段

n= [1, 2, 1, 3, 4, 2, 3, 1, 1, 2, 3] 

codes=([1, 'Red'], [2, 'Yellow'], [3, 'Green'], [4, 'Blue']) 

整數n和元組的列表然後,我想這是根據給定的整數的序列中的色碼由多個顏色的線段。參考

image

給定的圖像具有對應的顏色碼的約100的整數輸入序列長度和請找到這個圖像。如何構建這樣的東西?

+2

你有沒有嘗試過什麼? –

+0

你用什麼來顯示(任何)顏色:Tk,HTML等?有關您的環境和您嘗試過的更多細節將有助於縮小問題的範圍。 – pbuck

回答

2

對於這樣的事情在Python很好的解決方案是PIL庫:

代碼:

from PIL import Image, ImageDraw 

def colored_bar(data, colors, height=10, width=5): 
    # Create a blank image 
    im = Image.new('RGBA', (width * len(data), height), (0, 0, 0, 0)) 

    # Create a draw object 
    draw = ImageDraw.Draw(im) 

    for i, val in enumerate(data): 
     draw.rectangle((i * width, 0, (i+1) * width, height), 
         fill=colors[val]) 
    return im 

測試代碼:

n = [1, 2, 1, 3, 4, 2, 3, 1, 1, 2, 3] 
codes = dict(([1, 'red'], [2, 'yellow'], [3, 'green'], [4, 'blue'])) 

image = colored_bar(n, codes) 
image.show() 

結果:

enter image description here