把所有汉字叠写起来最后会留下空白吗?

五更了,这一次应评论区小伙伴要求,画汉字的热力图。@诸葛不亮@夕雪@polarlion。这回不再随机选,而是依次画Unicode列表里汉字的前「1,10,100,1k,10k,20k」叠加的热力图效果。很有意思的是前1000个汉字情形能明显的看出左右结构,存在大量单人旁的字。一直到画完所有的2万字左右依然可隐约看出左右结构。@王赟Maigo

四更下,有小伙伴@兴趣宝贝提出将汉字谚文与平假名片假名横向比较有失公允。下面直接比较下汉字偏旁部首,平假名/片假名,韩语字母。三者总数量很接近,随机取相同数目展示如下:

再更下,多谢@王赟Maigo指正,韩语Unicode只到D7A3,共计11172字「少了11个」。

多谢@王赟Maigo@Wayne提出日语字体的问题。最后面补上不同日语字体的比较。

「二更」受高赞回答启发,一并把日语和韩语的动图也画了。日语当然仅仅是平假名和片假名。最终看起来汉字的确是方块字。韩语排列组合拼凑的痕迹太明显,叠加字数不太多的时候具有明显的上下结构。日语平假名和片假名合起来像个球。哈哈。

虽然不懂语言学,但是用matplotlib简单的画了下,效果如下:

汉字:

汉字叠加效果https://www.zhihu.com/video/1244262404227670016

画图的时候刻意给汉字设置了5%的透明度,当总数到200基本就是一团黑了。但是一直画到2万字依然感觉黑色区域总面积还在增加。

韩语:

韩语叠加效果https://www.zhihu.com/video/1244474986271789056

日语平假名/片假名

日语平假名/片假名叠加效果https://www.zhihu.com/video/1244482295828426752

或许是因为平假名/片假名一共只有90几个字符,或许是其采用了草书效果,真的看起来像个球。

横向比较下,中日韩三语各随机取90个字符「日语可取的太少了」如下:

补充下不同日语字体的比较,这些字体是Mac上matplotlib自带的。画图的时候采用了相同的字体大小,那个像个球的中易黑体明显比其他小很多。

matplotlib画图使用的是Unicode:

中文:u4E00-u9FD5,共20949个汉字韩文:uAC00-uD7AF,共11183个字日文平假名u3040-u309f,共46字日文片假名u30a0-u30ff,共46字

代码如下:

importrandomdefchinese(num):'''随机选取num个中文字符'''chineselist=[chr(i)foriinrange(0x4E00,0x9FD5+1)]returnrandom.sample(chineselist,num)defjapanese(num):'''随机选取num个日文总平假名/片假名数字符'''japaneselist=[chr(i)foriinrange(0x3041,0x309f+1)ifnot(i==0x3097ori==0x3098)]+[chr(i)foriinrange(0x30a0,0x30ff+1)]returnrandom.sample(japaneselist,num)defkorean(num):'''随机选取num个韩文字符'''koreanlist=[chr(i)foriinrange(0xAC00,0xD7AF+1)]returnrandom.sample(koreanlist,num)

示例图:

importmatplotlib.pyplotaspltimportmatplotlib.patchesaspatchesfrommatplotlibimportfont_managerfontP=font_manager.FontProperties()fontP.set_family('SimHei')fontP.set_size(200)fontP1=font_manager.FontProperties()fontP1.set_family('SimHei')fontP3=font_manager.FontProperties()fontP3.set_family('AppleGothic')fontP3.set_size(200)fig,axs=plt.subplots(1,3,figsize=(12,4),dpi=100)plt.subplots_adjust(wspace=0.1)num=90labels=['汉字','日语','韩语']foriinrange(len(axs)):axs[i].axis('off')rect=patches.Rectangle((0.05,0.05),0.9,0.9,linewidth=1,edgecolor='r',facecolor='none')axs[i].add_patch(rect)axs[i].set_title(labels[i],fontproperties=fontP1,fontsize=20)fortinchinese(num):axs[0].text(0.03,0.16,r'%s'%(t),fontproperties=fontP,transform=axs[0].transAxes,alpha=0.05)fortinjapanese(num):axs[1].text(0.03,0.16,r'%s'%(t),fontproperties=fontP,transform=axs[1].transAxes,alpha=0.05)fortinkorean(num):axs[2].text(0.03,0.16,r'%s'%(t),fontproperties=fontP3,transform=axs[2].transAxes,alpha=0.05)plt.savefig('cjk.png',dpi=300,bbox_inches='tight')


传奇手游 http://www.008sy.com/

上一篇:

下一篇: