这就用Python给大家画这幅有趣的神分区图,看看是不是跟你的情况一样呢?
基本思路:我们将画布分成若干子画布,这些子画布构成绘图区域,在这些绘图区域上分别绘制图形,这就让我们想到函数subplot2grid()的使用方法。
plt.subplot2grid(shape, loc, rowspan= 1, colspan= 1, fig= None, **kwargs)
通过使用subplot2grid()函数的rowspan 和colspan 参数可以让子区跨越固定的网格布局的多个行和列,实现不同的子区布局。
值得注意的是,图形位置的索引起点是从0 开始算起的,而不是像子区函数subplot()中的图形位置是从1 开始算起的。
比如我们要画一张讲堂图片,区域大小为(3,3),起始位置为(0,0),跨区域只在行方向延伸3,详情代码如下:
importmatplotlib.pyplot asplt
importmatplotlib asmpl
mpl.rcParams[ "font.sans-serif"]=[ "SimHei"]
mpl.rcParams[ "axes.unicode_minus"]= False
plt.subplot2grid(( 3, 3),( 0, 0),colspan= 3)
plt.text( 0.5, 0.5, "讲堂",ha= "center",fontsize= 25)
plt.subplot2grid(( 3, 3),( 1, 1),colspan= 1)
plt.text( 0.5, 0.5, "学霸区",ha= "center",fontsize= 20)
结果图如下:
理解了函数subplot2grid()基本使用方法后,再回头看看那张神分布图,我们可将其区域大小为(6,8),大小是由自己设计,没有固定。可依次按照迟到党、睡神、深藏功与名等顺序,画每一类所属的区域。
详情代码如下:
importmatplotlib.pyplot asplt
importmatplotlib asmpl
mpl.rcParams[ "font.sans-serif"]=[ "SimHei"]
mpl.rcParams[ "axes.unicode_minus"]= False
plt.subplot2grid(( 6, 8),( 0, 0),colspan= 2,fc= 'red')
plt.text( 0.5, 0.5, "迟到党",ha= "center",fontsize= 15)
plt.subplot2grid(( 6, 8),( 0, 2),colspan= 4,fc= 'LightGrey')
plt.text( 0.5, 0.5, "睡神",ha= "center",fontsize= 20)
plt.subplot2grid(( 6, 8),( 0, 6),rowspan= 2,colspan= 2)
plt.text( 0.0, 0.5, "深藏功与名",va= "center",fontsize= 15)
plt.subplot2grid(( 6, 8),( 1, 0),colspan= 2,rowspan= 2)
plt.text( 0.5, 0.5, "考神",ha= "center",fontsize= 15)
plt.subplot2grid(( 6, 8),( 1, 2),colspan= 4,rowspan= 2,fc= 'Green')
plt.text( 0.5, 0.5, "LOL队友",ha= "center",fontsize= 20)
plt.subplot2grid(( 6, 8),( 2, 6),rowspan= 2,colspan= 2,fc= 'Moccasin')
plt.text( 0.5, 0.5, "忧伤少年",ha= "center",fontsize= 15)
plt.subplot2grid(( 6, 8),( 3, 0),colspan= 2,rowspan= 2,fc= 'pink')
plt.text( 0.5, 0.5, "女神",ha= "center",fontsize= 15)
plt.subplot2grid(( 6, 8),( 3, 2),colspan= 4,fc= 'Crimson')
plt.text( 0.5, 0.5, "学霸",ha= "center",fontsize= 15)
plt.subplot2grid(( 6, 8),( 4, 2),colspan= 6,fc= 'Orange')
plt.text( 0.5, 0.5, "妹子区",ha= "center",fontsize= 15)
plt.subplot2grid(( 6, 8),( 5, 0),colspan= 8,fc= 'yellow')
plt.text( 0.5, 0.5, "伪学霸区",ha= "center",fontsize= 20)
plt.suptitle( "大学教室座位神分区图",fontsize= 20)
plt.savefig( r'C:UsersAdministratorDesktopzuowei.png')
plt.show()
最终成品如下:
惊不惊喜,意不意外?
关于颜色的填充,可根据自己的喜欢颜色来设计,具体可参考RGB颜色值与十六进制颜色码转换工具,链接:
https://www.sioe.cn/yingyong/yanse-rgb-16/
https://www.sioe.cn/yingyong/yanse-rgb-16/
文中,还用到函数suptitle()是绘制Figure 画布标题的文本内容,text()是设置文字说明。在这里主要说说,text语法使用
text(x,y,string,fontsize= 15,verticalalignment= "top",horizontalalignment= "right")
参数说明:
x,y:表示坐标值上的值
string:表示说明文字
fontsize:表示字体大小
verticalalignment:垂直对齐方式 ,参数:[ ‘center’ | ‘top’ | ‘bottom’ | ‘baseline’ ]
horizontalalignment:水平对齐方式 ,参数:[ ‘center’ | ‘right’ | ‘left’ ]
好了,大学里面的教室座位分区用Python画就是这样了,哈哈哈,是不是忒简单,一个subplot2grid()就搞定。
最后,说说关于迟到党,至于迟到的嘛,没得挑,就哪儿有空位,自觉补去吧!我可是深有体会呀
另外,做个小调查,你经常会选择哪个位置坐下来听课呢?
▼
Q:你的宝座在哪个区?
转载 / 投稿请联系:baiyu@hzbook.com