建议丁丁猫童鞋们收藏便于配色需要的色彩编码! 继续上节课内容的九宫格,导入random模块实现16进制,8位数的随机生成! python代码实现 上节文章介绍了九宫格的写法: 色彩的探索之二:色彩和设计背后的科学
好奇心驱动人们对色彩的认知走了多远
['#B2B70A', '#6678F6', '#EFB5AB', '#11182B', '#F76ADB', '#EA7F64', '#6EB1EC', '#0D942D', '#226F46']
['#82943C', '#46FE86', '#4A6157', '#1B125F', '#0354A7', '#C0C95C', '#87C3DE', '#07C890', '#66A5BB']
['#3E5917', '#A73F0F', '#8B2405', '#37A4F8', '#29E01B', '#4EE0B0', '#DE791E', '#AF56AB', '#BC92D2']
['#5AE520', '#0C5D24', '#CAB3E8', '#97D282', '#53D20C', '#BAEF01', '#CFF155', '#DAF4E0', '#5CD165']
—— 伪随机的表现?
['#2467DA', '#1467F5', '#7E35DE', '#B14307', '#99A588', '#0B9DF1', '#B50175', '#BC08F7', '#402882']
['#F8230C', '#2DED54', '#391495', '#FE5DD3', '#D8F6D6', '#C37E4C', '#195FE8', '#936040', '#EF1909']
['#B624DD', '#4B3866', '#99B605', '#284EAC', '#0E1EBA', '#8712DB', '#1C9C6E', '#E1D942', '#32C675']
['#4A01A0', '#B66AAA', '#37B0B4', '#814208', '#72C47D', '#B0F71C', '#C478E5', '#BB38F4', '#FF0AB1']
['#6C7B3C', '#0418F8', '#935C19', '#7131B9', '#4150F3', '#3E8EB3', '#682C0D', '#684DA7', '#53616A']
['#AE6E4B', '#33E1A6', '#7D63B7', '#E20DD5', '#D3B911', '#D565C1', '#2564B0', '#534E6B', '#73997C']
['#59CFD0', '#743460', '#AC570A', '#2A8595', '#EC4B8C', '#3540EB', '#8AD183', '#E87BB7', '#D90367']
['#DA5034', '#DFDB39', '#C1F3D4', '#657927', '#2E431C', '#BFE7F2', '#83F9C3', '#130E80', '#0752B1']
['#6DC2CE', '#E4D134', '#4C35EF', '#A73088', '#B9C1B6', '#986109', '#6CCA35', '#8D0F23', '#47C07E']
['#EE2C55', '#208177', '#ED82F6', '#444578', '#A6DDC5', '#F17869', '#2EF2E0', '#15F57B', '#7EAC80']
['#F97693', '#C5564C', '#F17F38', '#713F91', '#91958C', '#2DEEF0', '#11CA40', '#B19080', '#A568A0']
['#D7EB80', '#B0C2EA', '#3E9D73', '#C6ABFE', '#B5D52A', '#747B13', '#C904FA', '#7C746A', '#1620E6']
['#53EDED', '#B09D62', '#9AD5F6', '#FE2BBD', '#BDE209', '#E374E2', '#D403AB', '#7C41B6', '#8A985A']
常见颜色的英文表达,更加精准且丰富的色彩表达则借助16进制的8位数表达
Turtle和matplotlib的色彩编码一致
b: blue
g: green
r: red
c: cyan
m: magenta
y: yellow
k: black
w: white`</pre>
scatter(X,Y, color='red')
scatter(X,Y, color='orange')
scatter(X,Y, color='darkgreen')
**1 随机选取9种颜色并且实现九宫格调色板
import random
def bit_16(n):
ans = []
for i in range(n):
c = '#'+"".join([random.choice("0123456789ABCDEF") for i in range(6)])
ans.append(c)
return ans
def square(l,c): #
t.color(c)
t.begin_fill()
for i in range(5):
t.forward(l)
t.right(90)
t.end_fill()
return #t.done()
def main_square(n,l,x,y):
t.penup()
t.goto(x,y)
t.pendown()
colors = bit_16(n)
print(colors)
for i,c in enumerate(colors):
t.penup()
t.goto(x + (i % 3)*l, y-(i//3)*l)
#算法怎么实现9个正方形的起笔位置准确入位?
t.pendown()
t.left(90)
square(l, c)
return t.done()
n,l = 9,100
x,y = -200,100
print(main_square(n,l,x,y))
输出效果见前文!
** 2 turtle 代码实现140种颜色满铺色板**
colors = {'aliceblue': '#F0F8FF',
'antiquewhite': '#FAEBD7',
'aqua': '#00FFFF',
'aquamarine': '#7FFFD4',
'azure': '#F0FFFF',
'beige': '#F5F5DC',
'bisque': '#FFE4C4',
'black': '#000000',
'blanchedalmond': '#FFEBCD',
'blue': '#0000FF',
'blueviolet': '#8A2BE2',
'brown': '#A52A2A',
'burlywood': '#DEB887',
'cadetblue': '#5F9EA0',
'chartreuse': '#7FFF00',
'chocolate': '#D2691E',
'coral': '#FF7F50',
'cornflowerblue': '#6495ED',
'cornsilk': '#FFF8DC',
'crimson': '#DC143C',
'cyan': '#00FFFF',
'darkblue': '#00008B',
'darkcyan': '#008B8B',
'darkgoldenrod': '#B8860B',
'darkgray': '#A9A9A9',
'darkgreen': '#006400',
'darkkhaki': '#BDB76B',
'darkmagenta': '#8B008B',
'darkolivegreen': '#556B2F',
'darkorange': '#FF8C00',
'darkorchid': '#9932CC',
'darkred': '#8B0000',
'darksalmon': '#E9967A',
'darkseagreen': '#8FBC8F',
'darkslateblue': '#483D8B',
'darkslategray': '#2F4F4F',
'darkturquoise': '#00CED1',
'darkviolet': '#9400D3',
'deeppink': '#FF1493',
'deepskyblue': '#00BFFF',
'dimgray': '#696969',
'dodgerblue': '#1E90FF',
'firebrick': '#B22222',
'floralwhite': '#FFFAF0',
'forestgreen': '#228B22',
'fuchsia': '#FF00FF',
'gainsboro': '#DCDCDC',
'ghostwhite': '#F8F8FF',
'gold': '#FFD700',
'goldenrod': '#DAA520',
'gray': '#808080',
'green': '#008000',
'greenyellow': '#ADFF2F',
'honeydew': '#F0FFF0',
'hotpink': '#FF69B4',
'indianred': '#CD5C5C',
'indigo': '#4B0082',
'ivory': '#FFFFF0',
'khaki': '#F0E68C',
'lavender': '#E6E6FA',
'lavenderblush': '#FFF0F5',
'lawngreen': '#7CFC00',
'lemonchiffon': '#FFFACD',
'lightblue': '#ADD8E6',
'lightcoral': '#F08080',
'lightcyan': '#E0FFFF',
'lightgoldenrodyellow': '#FAFAD2',
'lightgreen': '#90EE90',
'lightgray': '#D3D3D3',
'lightpink': '#FFB6C1',
'lightsalmon': '#FFA07A',
'lightseagreen': '#20B2AA',
'lightskyblue': '#87CEFA',
'lightslategray': '#778899',
'lightsteelblue': '#B0C4DE',
'lightyellow': '#FFFFE0',
'lime': '#00FF00',
'limegreen': '#32CD32',
'linen': '#FAF0E6',
'magenta': '#FF00FF',
'maroon': '#800000',
'mediumaquamarine': '#66CDAA',
'mediumblue': '#0000CD',
'mediumorchid': '#BA55D3',
'mediumpurple': '#9370DB',
'mediumseagreen': '#3CB371',
'mediumslateblue': '#7B68EE',
'mediumspringgreen': '#00FA9A',
'mediumturquoise': '#48D1CC',
'mediumvioletred': '#C71585',
'midnightblue': '#191970',
'mintcream': '#F5FFFA',
'mistyrose': '#FFE4E1',
'moccasin': '#FFE4B5',
'navajowhite': '#FFDEAD',
'navy': '#000080',
'oldlace': '#FDF5E6',
'olive': '#808000',
'olivedrab': '#6B8E23',
'orange': '#FFA500',
'orangered': '#FF4500',
'orchid': '#DA70D6',
'palegoldenrod': '#EEE8AA',
'palegreen': '#98FB98',
'paleturquoise': '#AFEEEE',
'palevioletred': '#DB7093',
'papayawhip': '#FFEFD5',
'peachpuff': '#FFDAB9',
'peru': '#CD853F',
'pink': '#FFC0CB',
'plum': '#DDA0DD',
'powderblue': '#B0E0E6',
'purple': '#800080',
'red': '#FF0000',
'rosybrown': '#BC8F8F',
'royalblue': '#4169E1',
'saddlebrown': '#8B4513',
'salmon': '#FA8072',
'sandybrown': '#FAA460',
'seagreen': '#2E8B57',
'seashell': '#FFF5EE',
'sienna': '#A0522D',
'silver': '#C0C0C0',
'skyblue': '#87CEEB',
'slateblue': '#6A5ACD',
'slategray': '#708090',
'snow': '#FFFAFA',
'springgreen': '#00FF7F',
'steelblue': '#4682B4',
'tan': '#D2B48C',
'teal': '#008080',
'thistle': '#D8BFD8',
'tomato': '#FF6347',
'turquoise': '#40E0D0',
'violet': '#EE82EE',
'wheat': '#F5DEB3',
'white': '#FFFFFF',
'whitesmoke': '#F5F5F5',
'yellow': '#FFFF00',
'yellowgreen': '#9ACD32'}
print(len(colors)) # == 140
x = len(colors)
import turtle as t
import math
#colors =['#e2d8e2', '#a8996c', '#2d281f',
# '#9facb1', '#e9daa9', '#684a24',
# '#5c6051', '#bb783b', '#86b086']
def square(l,c): #
t.color(c)
t.begin_fill()
for i in range(5):
t.forward(l)
t.right(90)
t.end_fill()
return #t.done()
l,c = 100,'#e9daa9'
#print(square(l,c))
def main_square(n,l,x,y):
t.penup()
t.goto(x,y)
t.pendown()
t.speed(1000)
for i,c in enumerate(colors):
t.penup()
t.goto(x + (i % (n+3))*l, y-(i//(n+3))*l) #算法怎么实现9个正方形的起笔位置准确入位?
t.pendown()
t.left(90)
square(l, c)
return t.done()
n,l = int(math.sqrt(x)),600//int(math.sqrt(x))
x,y = -380,260
print(main_square(n,l,x,y))
3 matplotlib 色彩编码与turtle相同- 代码实现
import matplotlib.pyplot as plt
from matplotlib import colors as mcolors
'''
b: blue
g: green
r: red
c: cyan
m: magenta
y: yellow
k: black
w: white
scatter(X,Y, color='red')
scatter(X,Y, color='orange')
scatter(X,Y, color='darkgreen')
'''
colors = dict(mcolors.BASE_COLORS, **mcolors.CSS4_COLORS)
# Sort colors by hue, saturation, value and name.
by_hsv = sorted((tuple(mcolors.rgb_to_hsv(mcolors.to_rgba(color)[:3])), name)
for name, color in colors.items())
sorted_names = [name for hsv, name in by_hsv]
n = len(sorted_names)
ncols = 4
nrows = n // ncols
fig, ax = plt.subplots(figsize=(12, 10))
# Get height and width
X, Y = fig.get_dpi() * fig.get_size_inches()
h = Y / (nrows + 1)
w = X / ncols
for i, name in enumerate(sorted_names):
row = i % nrows
col = i // nrows
y = Y - (row * h) - h
xi_line = w * (col + 0.05)
xf_line = w * (col + 0.25)
xi_text = w * (col + 0.3)
ax.text(xi_text, y, name, fontsize=(h * 0.8),
horizontalalignment='left',
verticalalignment='center')
ax.hlines(y + h * 0.1, xi_line, xf_line,
color=colors[name], linewidth=(h * 0.8))
ax.set_xlim(0, X)
ax.set_ylim(0, Y)
ax.set_axis_off()
fig.subplots_adjust(left=0, right=1,
top=1, bottom=0,
hspace=0, wspace=0)
plt.show()