Python 色彩 详解与实例
目录
要点: Python中的色彩。
Python中的色彩
把python和seaborn中支持的颜色都画出来。其中,matplotlib 包中的颜色定义在 matplotlib/lib/matplotlib/_color_data.py 中。
(1) 左边颜色名,右边16进制颜色
import matplotlib
i=0
for name, hex in matplotlib.colors.cnames.items():
i+=1
print(i, name, hex)
输出:
1 aliceblue #F0F8FF
2 antiquewhite #FAEBD7
3 aqua #00FFFF
...
146 whitesmoke #F5F5F5
147 yellow #FFFF00
148 yellowgreen #9ACD32
(2) 左边颜色块,右边颜色名字和16进制
结果: matplotlib中的色彩, seaborn中的色彩
# code
def sortColors(colorDict):
from matplotlib import colors as mcolors
colors=colorDict #seaborn.xkcd_rgb #dict
# 对颜色排序
# Sort colors by hue, saturation, value and name.
by_hsv = sorted((tuple(mcolors.rgb_to_hsv(mcolors.to_rgba(color)[:3])), name) #[::-1]
for name, color in colors.items())
sorted_names = [name for hsv, name in by_hsv]
return sorted_names;
def colorDict2HTML(colorDict, fName, header):
sorted_names=sortColors(colorDict)
colors=colorDict
#
N=len(colors)
cols=6
rows=N // cols +1
print(N, "(",rows, 'rows,', cols, 'columns)')
#
fw=open(fName, 'w')
html="""
<style>
ul{list-style-type:none;}
ul li{margin: 0; padding: 0;}
ul span{width:200px; display:inline-block; font-size:10px;}
ul span b{width:45px;height:15px; display:inline-block; margin-right: 5px;}
ul span i{font-size: xx-small; color: #eee;}
</style>
<h1>%s</h1>\n<ul>
"""
fw.write(html % header)
i=0
Dict={}
for cName in sorted_names:
cHex=colors[cName]
i+=1
if i>10:
#break;
pass;
nRow=i % rows;
nCol=i // rows;
if nRow not in Dict:
Dict[nRow]="<li>"
Dict[nRow]+="<span><b style='background:%s'></b>%s<i>(%s)</i></span>" % (cHex, cName,cHex);
#
for i in Dict:
li=Dict[i];
fw.write(li +"</li>\n")
fw.write("</ul>")
fw.close();
print('==end==:', fName)
#
import seaborn
colorDict2HTML(seaborn.xkcd_rgb, 'web/docs/pic/seabornColors.html', 'seaborn colors')
# 949 ( 159 rows, 6 columns)
import matplotlib
colorDict2HTML(matplotlib.colors.cnames, 'web/docs/pic/matplotlibColors.html', 'matplotlib colors')
# 148 ( 25 rows, 6 columns)
获取调色板并显示
import seaborn as sns
# 显示sns的一个调色板板
sns.palplot(sns.color_palette("muted"))
sns.color_palette("xx") #主动报错,会显示全部调色板名字
# 显示plt的色板
import matplotlib.pyplot as plt
plt.cm.Pastel1
plt.cm.spring
help(plt.cm) #查看全部调色板名字
# 获取plt调色板的rgb值
colors = iter([plt.cm.Pastel1(i) for i in range(9)])
for i in colors:
print(i) #(1.0, 1.0, 0.8, 1.0) 前面都是0-1之间的,最后一个alpha默认是1
# 获取plt调色板的rgb值,并可视化颜色
colors2 = [plt.cm.Pastel1(i) for i in range(9)]
sns.palplot(colors2)
最后一个图 sns.palplot 的输出:
# 配对颜色 import matplotlib.pyplot as plt plt.cm.Paired