用python画图的作品_python语言,文章绘图配色高级又简单!

配色的选择是在我们论文文章画图过程中经常面临的一个问题。常用的R或python语言都内置了默认的颜色系统,强大的默认设置可以满足我们的绘图需求。

但当我们需要绘制更多的图形时,固定的配色就会显得重复,此时通过自定义颜色就可以丰富图形的表现。但是当遇上选择困难户这又诞生了一个更大的问题。随机的选择又不能满足一个处女座该有的挑剔,这可怎么办呢?下面小鹿将介绍一种从艺术画作中提取特征颜色的新奇思路,让名家审美来满足挑剔的你~

GRB颜色空间

要想学会配色,首先要对颜色有一定的认知。RGB颜色空间以R(Red:红)、G(Green:绿)、B(Blue:蓝)三种基本色为基础,进行不同程度的叠加,产生丰富而广泛的颜色,俗称三基色模式。每一种颜色按其亮度的不同分为256个等级,可表示256的立方16777216种不同的颜色,是计算机使用最广泛的颜色空间。

将图片中的每个像素绘制到三维空间如图所示:

3418457229341681831-14.gif

印象派

什么是印象派风格?19世纪60年代,法国画家克劳德·莫奈(Claude Monet)的一幅油画《日出·印象》因为过于粗糙、随便,受到一位记者嘲讽:“完全是凭印象胡乱画出来的。”;又比如荷兰后印象派画家文森特·梵高,都是“印象主义”。随着时间推移,印象派逐渐成为西方绘画史上划时代的艺术流派。印象主义采取在户外阳光下直接描绘景物,光影色彩丰富。文章图形配色以这些经历了历史沉淀的大师作品作为配色依据,从中提取主题颜色备选成为了文章配色的一种思路。

主题颜色的提取

可从图片中提取主题色算法有颜色量化法(Color Quantization)、聚类(Clustering)和颜色建模等方法。下图为通过聚类算法,提取部分印象派画作主题色,以十六进制表示。

3418457332420899859-14.png

图1| 莫奈名画3418457401140378470-14.png

图2 |梵高名画

从图片中提取主题颜色,取决于图片颜色本身的组成,一般选取颜色对比分明的图片效果较好,同时因为组成颜色的像素一般远超过聚类数,会在每个聚类中选取特征色作为主题色的组成,因此主题色的组成会根据聚类数的不同而不同。当主题色提取完成以后,可以从中选取具有对比强烈的颜色进行绘图!

如何实现呢?

In [14]:

importos

importmatplotlib.pyplotasplt

importmatplotlibasmpl

from sklearn.clusterimportMiniBatchKMeans, KMeans

os.chdir(r"C:\Users\Pioneer\Desktop\color")

img = plt.imread("test.jpg")

img0 = img

img=img.reshape(img.shape[0]*img.shape[1],3)

p=KMeans(n_clusters=7)

p.fit_predict(img)

centroids=p.cluster_centers_ / 255

cmap=mpl.colors.ListedColormap(centroids)

l = centroids.tolist()

l.sort(key=lambda x:sum(x))# 将 RGB 转为十六进制

defRGB_to_Hex(tmp):

rgb = [x * 255 for x in tmp]  # 将RGB格式划分开来

strs = '#'

for i in rgb:

num =int(i) # 将str转int

strs += str(hex(num))[-2:].replace('x', '0').upper()

return strs

c = []

fori in l:

c.append(RGB_to_Hex(i))

# 图像显示

fig=plt.figure(figsize=(5,5)

rect1 = [0.1, 0.3, 0.8, 0.65]

ax1 = plt.axes(rect1)

plt.imshow(img1)

ax1.axis("off")

rect2 = [0.1, 0.05, 0.8, 0.2]

ax2 = plt.axes(rect2)

n = 7

lx = []

for i inrange(n):

lx.append((i*6,i*6+6))

ax2.broken_barh(lx, (6*(n-1)/2, 24), facecolors=c)

ax2.set_ylim(0, 6*n)

ax2.set_xlim(0, 6*n)

for j,k inzip(range(n),c):

x = j*6+3

y = 6*(n-1)/2-18

plt.text(x,y,k,fontsize=8,rotation=30,ha='center')

plt.axis("off")print(c)

['#2B1818', '#304158', '#914728', '#497EA9', '#DC8B2E', '#76CAED', '#D5CCA3']

3418457523547212374-14.png

参照以上方式,大师配色方法就学到手啦~对于我们文章的美观度和准确性将更进一部分的提升,谁说配色不重要呢?处女座该有的挑剔你千万不要放过哦~

鹿明生物的知识小分享将与您常伴,欢迎关注鹿明生物公众号,更多生信知识分享不停歇哦~

猜你还想看

END

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值