9 j- Q* Y' \; e; _1 ^一行Python代码有多强,可让图形秒变「手绘风」! k8 M* U2 F& m; E x
之前介绍过一个绘制手绘风格图形的工具cutecharts:一款蠢萌蠢萌的可视化工具 9 w+ X/ v0 u6 p# e- k: D2 i9 Q# ? b, d
3 b. k- x# c5 _# e+ s. t& [但是,其功能有限,今天再介绍一个手绘工具(matplotlib.pyplot.xkcd()),一行代码可将所有Matplotlib和Seaborn绘制的图形变为手绘风格。3 a* B+ ?: \! |
: f2 x/ w1 J. H, r
( v" _5 e& Z3 a& p6 b9 ]7 W
matplotlib.pyplot.xkcd()简介 % y% z; C! J9 ?" S4 P这个Matplotlib子函数特别简单,只有三个参数,别看参数少,但功能可不小4 T- R# K( i" u* e! x4 s4 P
|9 x( Z* S! ?& ~4 e, ?2 o9 M# u/ A% u2 x/ }* ?! Q% J4 k; G [
matplotlib.pyplot.xkcd(scale=1, #相对于不使用xkcd的风格图,褶皱的幅度 1 ~& F' j* Y, o* M( d: v$ i length=100, #褶皱长度 }) b& S. g% v4 X. y
randomness=2#褶皱的随机性* C/ c# M' G; O3 o+ n
)- f8 p! T7 }9 T' ?
matplotlib.pyplot.xkcd()使用. l1 ^# X; Y. j
如下,加with行代码即可,括号中参数按个人喜好决定是否设置~# _3 E. |! H4 s p b0 w. b
. A7 d4 y. y! m% W+ S3 a
- [( d, }# S, {8 S+ Bwith plt.xkcd(scale=1, length=100, randomness=2): , q: m& X# r! ]' P$ F: V1 @7 ?4 T#with是临时使用一下,不影响其它图使用正常样式9 F5 ~( Z. L. A5 G0 y
绘图代码8 z0 l' H) T# `
。。。。。。$ a) K9 P7 u# H+ U: ]; _9 X
plt.show() + X4 h8 O" P- _5 I8 q, }matplotlib.pyplot.xkcd()使用实例 4 p! O# g8 G0 {! I3 z1 `6 a
下面代码为pythonic生物人公众号之前的文章代码4 b) G2 Q/ T* a/ v$ O. E0 T! @
# h( n" I" A3 q/ E6 C) f
. Z4 M* L6 s s- Z9 D) h# K
以下参考:Python可视化25|seaborn绘制矩阵图0 p2 q% p6 f5 J% t
0 i: {4 i* h5 D' z! y; o& `3 m5 o/ B2 H5 g. P+ E! `& I
#支持seaborn / Z; O/ r/ c) Q0 n% x1 t, r' _import seaborn as sns k- s/ T4 L$ _( d+ |
iris_sns = sns.load_dataset("iris")& T* l* }/ Q9 U
with plt.xkcd(): L G3 W4 v. c/ }2 Y8 d6 G
g = sns.pairplot( $ o/ [( {, ^4 G' [ iris_sns,3 C5 ^8 B# C7 d, U7 X' J, E
hue='species', #按照三种花分类; k$ N1 V; c' A9 ^
palette=['#dc2624', '#2b4750', '#45a0a2']) ! h7 ]3 m o2 n. C: @- H( w9 b sns.set(style='whitegrid') $ D: G) h6 z2 v! F* T5 S g.fig.set_size_inches(12, 12) 7 C* \5 F _9 I, o* c5 a% c! d* G sns.set(style='whitegrid', font_scale=1.5) $ J1 C: V/ ^4 T T# b + v5 k; o' s8 g4 K' P& \3 [
4 h" T) N# @- ~) U; `4 s) A . b$ g: V1 d5 h5 N! B以下参考:Python可视化29|matplotlib-饼图(pie) 5 H0 H8 Z* g- J" W( G & ?2 J9 u; W# `- M& w% R0 l+ d0 q5 Z' m6 d
import matplotlib.pyplot as plt* c' _- y# _$ _5 I& d3 |
with plt.xkcd(7 G8 ]: U7 {8 o! U! `9 o5 G, Y" a
scale=4, #相对于不使用xkcd的风格图,褶皱的幅度 ; }, m# I/ b8 h) `3 k, Q% x( u length=120, #褶皱长度2 l" _$ G) c9 D7 e$ O
randomness=2): #褶皱的随机性 * B* U ^& k) ?$ \ f2 s plt.figure(dpi=150)5 U+ Z8 {+ `2 H* i
patches, texts, autotexts = plt.pie( 7 ~9 k9 ]$ ?' v8 {- x, p x=[1, 2, 3], #返回三个对象 $ q- \! `# ]( ?' s, q+ k" \ labels=['A', 'B', 'C'], ; v6 O2 V" B) f colors=['#dc2624', '#2b4750', '#45a0a2'],- z& L/ X; G( ^/ Z" ?9 g
autopct='%.2f%%',7 y4 Z' }' J3 z0 k) s1 s# o X3 R# G
explode=(0.1, 0, 0)): g/ X- x2 \3 l0 @# A
texts[1].set_size('20') #修改B的大小0 m$ C5 h3 S3 b' s/ t2 n