前言
520刚过去了,大家有没有跟自己喜欢的对象在一起呢? 520 当天你还在送 玫瑰花?巧克力?情侣套装?。。。
小编就想说:你能不能换点新意呢,这些操作已经普通的不能再普通了吧!就像别人来例假你就让人家多喝水、多休息,这不是废话么,小编猜不出两天。。。。嗯。。。。。感情就分裂了吧(小编瞎扯蛋,抱头)。生活没点新意还怎么玩下去了,怎么在对象面前装逼啦,对吧!今天小编就来告诉你,如何发挥的自的技能,利用Python画一颗特别的心,然后送给她。
可能有你会说,520不是过了吗,现在说这个有啥子用叻。小编只想说520过了,不是还有“七夕”吗,“七夕”过了不是还有“元宵”吗?嫌久的好,不是还有每个月的14号吗?给你一张图自己领略吧。。。。
看了这图,看你还想不想过情人节啦~~~
唉~~好啦,小编不再扯蛋了,自己给自己打狗粮,这也没谁了,再打的话可能就缺氧了,先溜为妙,朋友再见。。。。。
数学补充
下面开始用Python画一颗特别的爱心,送给那个特别的她,给她一份浪漫的惊喜吧~
前方“数学公式”高能,兄弟,为了妹子,稳住!!!!
以下是心形曲线的计算公式。别问怎么来的,用就是了。哈哈~~~
准备工作
1、本实验使用Python进行开发,没安装开发环境的可看: python3 开发环境搭建 。
2、在实验中要使用到“numpy”和 "matplotlib"这两个依赖库,所以得先安装它:
pip3 install numpy
pip3 install matplotlib
开始码字
爱心基本款
首先,我们先来画一颗最朴素的爱心(寓意:初心)。
# -*- coding: UTF-8 -*-
import numpy as np
import matplotlib.pyplot as plt
x_coords = np.linspace(-100, 100, 500)
y_coords = np.linspace(-100, 100, 500)
points = []
for y in y_coords:
for x in x_coords:
if ((x*0.03)**2+(y*0.03)**2-1)**3-(x*0.03)**2*(y*0.03)**3 <= 0: # 引用公式
points.append({"x": x, "y": y})
heart_x = list(map(lambda point: point["x"], points))
heart_y = list(map(lambda point: point["y"], points))
plt.scatter(heart_x, heart_y, s=10, alpha=0.5)
plt.show()
运行后上面的代码,我们定制的基本款爱心就显示出来啦:
好,有了基本款的爱心之后,我们接下来开始解锁高"级定制款",给爱心填充不同的颜色。
高级爱心定制款
要搞高级定制的东西是要花点心思的哦!不然怎么泡妞。不过这里超简单,具体操作是:
给爱心填充不同的颜色,只需在上面代码的 "scatter函数" 中指定 "cmap参数" 即可,如下:
plt.scatter(heart_x, heart_y, s=10, alpha=0.5, c=range(len(heart_x)), cmap=<cmap>)
通过改变"cmap"这个参数,我们就可以定制不同款色的高级爱心啦!
下面是不同色系的定制款:
• <cmap="autumn"> 橙色的爱心送给热情洋溢的她
• <cmap="spring"> 青春的爱心送给充满朝气的她
• <cmap="rainbow"> 彩虹般的爱心送给充满绚丽幻想的她
• <cmap="cool"> 紫色的爱心送给优雅宁静的她
• <cmap="magma"> 晚霞般的爱心送给醇厚脱俗的她
• <cmap="Reds"> 炽热的爱心送给热烈奔放的她
• <cmap="viridis"> 翡翠色的爱心送给平静柔和的她
• <cmap="gist_rainbow"> 五彩缤纷的爱心送给多姿多彩的她
好了,篇幅有限,先扯到这里了,,相信这9颗心应该也够大家顶一阵子了。
【更多样式】
哎呀!还不够用?你有点贪心了哈,算了还是满足你吧!看这里:
values: Accent, Accent_r, Blues, Blues_r, BrBG, BrBG_r, BuGn, BuGn_r, BuPu,
BuPu_r, CMRmap, CMRmap_r, Dark2, Dark2_r, GnBu, GnBu_r, Greens, Greens_r, Greys, Greys_r, OrRd, OrRd_r, Oranges, Oranges_r, PRGn, PRGn_r,
Paired, Paired_r, Pastel1, Pastel1_r, Pastel2, Pastel2_r, PiYG, PiYG_r, PuBu, PuBuGn, PuBuGn_r, PuBu_r, PuOr, PuOr_r, PuRd, PuRd_r,
Purples, Purples_r, RdBu, RdBu_r, RdGy, RdGy_r, RdPu, RdPu_r, RdYlBu, RdYlBu_r, RdYlGn, RdYlGn_r, Reds, Reds_r, Set1, Set1_r, Set2, Set2_r,
Set3, Set3_r, Spectral, Spectral_r, Vega10, Vega10_r, Vega20, Vega20_r, Vega20b, Vega20b_r, Vega20c, Vega20c_r, Wistia, Wistia_r, YlGn,
YlGnBu, YlGnBu_r, YlGn_r, YlOrBr, YlOrBr_r, YlOrRd, YlOrRd_r, afmhot, afmhot_r, autumn, autumn_r, binary, binary_r, bone, bone_r, brg,
brg_r, bwr, bwr_r, cool, cool_r, coolwarm, coolwarm_r, copper, copper_r, cubehelix, cubehelix_r, flag, flag_r, gist_earth, gist_earth_r,
gist_gray, gist_gray_r, gist_heat, gist_heat_r, gist_ncar, gist_ncar_r, gist_rainbow, gist_rainbow_r, gist_stern, gist_stern_r, gist_yarg,
gist_yarg_r, gnuplot, gnuplot2, gnuplot2_r, gnuplot_r, gray, gray_r, hot, hot_r, hsv, hsv_r, inferno, inferno_r, jet, jet_r, magma,
magma_r, nipy_spectral, nipy_spectral_r, ocean, ocean_r, pink, pink_r, plasma, plasma_r, prism, prism_r, rainbow, rainbow_r, seismic,
seismic_r, spectral, spectral_r, spring, spring_r, summer, summer_r, tab10, tab10_r, tab20, tab20_r, tab20b, tab20b_r, tab20c, tab20c_r,
terrain, terrain_r, viridis, viridis_r, winter, winter_r
够了没,一个值就是一个样式,赶紧逐个去试吧,够你用的了。
3 条评论
为什么高级款的得不了,camp部分的代码能详细点吗
很简单,将上面代码中的:plt.scatter(heart_x, heart_y, s=10, alpha=0.5)替换为:plt.scatter(heart_x, heart_y, s=10, alpha=0.5, c=range(len(heart_x)), cmap=),然后在=号后面加入需要实现款式的参数,如橙色款"autumn",变更后实际代码为:plt.scatter(heart_x, heart_y, s=10, alpha=0.5, c=range(len(heart_x)), cmap='autumn')
不错不错, 这个比我之前在b站看到的用符号来做的心漂亮太多!