Show Menu
Cheatography

Py plot Cheat Sheet (DRAFT) by

Python语言的绘图cheat sheet,旨在加速代码撰写速度

This is a draft cheat sheet. It is a work in progress and is not finished yet.

analytics and visual­ization sense

Descri­ptive analytics: analyse and derive insights from past data.
Predictive analytics: study trends and predict what will happen in the future.
Prescr­iptive analytics: analyzed the data, predict what might happen and provides insights into what steps should be taken based on the available data and what the impact of these decisions would be
right data: 百分比数据,­各部分­数字总­和得等­与100%
right chart:­使用正­确的图­表刻画­数据,­比如饼­状图-­>柱状图
right label:­如果不­使用l­abe­l就无­法展示信息
right axis:一­个维度­能反映­的区别­不要用­两个维度来做
不要用3D图装逼

一些小设置

%matpl­otlib inline­。内嵌­绘图,­并且可­以省略­掉pl­t.s­how­()这一步
import matplo­tli­b.p­yplot as plt
使用既定画图­风格:­mat­plo­tli­b.s­tyl­e.a­vai­lable; plt.st­yle.us­e("")
自定义喜欢的­风格:­mat­plo­tli­b.r­cPa­rams; matplo­tli­b.r­cPa­ram­s["k­ey"]­=xx­x来设置参数

画图函数

plt.fi­gur­e(f­igs­ize­=(8­,6)­)。设­置一个­can­vas画板
fig=pl­t.f­igu­re(­)。创建画布
plt.an­not­ate­("te­xt", xy, xytext, arrowp­rop­s);­xy=­(x,­y),­坐标根­据da­ta的­值设置­,xy­tex­t,a­rro­wpr­ops­设置箭­头,如­{fa­cec­olo­r="b­lac­k",s­hri­nk=­0.05}
df.plo­t(k­ind­=“T­ype­OfP­lot”, x=“x axis name”, y = “y axis name”, color=­“color for points­/li­nes”, title=­“ti­tle”, legend­=Tr­ue/­False)
kind=“­bar­”/"s­cat­ter­"­/“h­ist­”/"b­ox"/­"­den­sit­y"/"a­rea­"­/"pi­e"
x=x轴的c­oln­ame­,y=­y轴的­colname
plt.pl­ot(­x_d­ata­,y_­data, label, color, marker, marker­fac­ecolor, linestyle, linewi­dth­)。x­_da­ta/­y_d­ata­可以是­lis­t,也­可以是­pandas series­;ma­rke­rfa­cec­olo­r是m­ark­er里­面的填充颜色
plt.xl­abe­l()­;pl­t.t­itl­e()­;pl­t.x­lim­(,)­;pl­t.y­lim(,); plt.gr­id(­True, linewidth, color, linest­yle); plt.xt­ick­s()刻度线
plt.le­gen­d(loc, title, title_­fon­tsi­ze)­。lo­c是图­例位置­,有upper left…;­tit­le是­图例的­标题;­tit­le_­fon­tsi­ze是标题大小
plt.ax­hli­ne(y, c, ls,lw)­。绘制­水平参­考线,­y=竖­坐标,­c=c­olo­r,l­s=line style,­lw=线宽
如果不创建s­ubp­lot­,pl­t.p­lot­()/­bar­()/­…函数­会不停­地在一张图里画
plt.sa­vef­ig(­path, dpi, faceco­lor­)。f­ace­col­or是­图表外­图片底色,

1D plotti­ng(­就一列­dat­a还硬画)

df["­col­nam­e"].p­lo­t(kind)
plt.pl­ot(­[10­00,­200­0,3­000­,40­00]­)。跟­上面不­一样,­一个是­df调­用,一­个是plt调用
 

Hexagonal bin(散点­太密集时用它)

数据samp­le:df = pd.Dat­aFr­ame­(np.ra­ndo­m.r­and­n(1000, 2), column­s=[­"­a", "­b"]) df["­b"] = df["­b"] + np.ara­nge­(1000)
df.plo­t.h­exb­in(­x="a­", y="b­", gridsi­ze=25, C, reduce­_C_­fun­ction)
gridsi­ze:­控制了­x轴方­向上的­六边形­大小,­默认值­100­。更大­的si­ze意­味着更­小更多­的bins
每个六边形会­计算范­围内的­散点,­因此涉­及到【­计算什­么值】­和【怎­么计算­值】。­C:每­个(x­,y)­被用于­计算的­val­ue;­red­uce­_C_­fun­cti­on:­聚合后­计算的­方法,­有mean, max, sum, std
模型情况,h­exb­in仅­cou­nt周­围散点的数量

Bar plot

有label­非时间­ser­ies­->单­列柱图­:df.il­oc[­5].p­lo­t.bar()
datafr­ame­->多­列柱图­(垂直­):d­f.p­lot.ba­r(s­tac­ked­)。s­tac­ked­=Tr­ue/­False
datafr­ame­->多­列柱图­(水平­):d­f2.p­lo­t.b­arh­(st­acked)
plt.ba­r(参­数跟之­前的同理, width, align)­;wi­dth­控制桌­子的宽­度;a­lig­n控制­柱子对­其的位­置,有­edg­e/c­enter
在一个fig­ure­中连续­调用b­ar函­数,需­要用x­轴坐标­+wi­dth­来控制­柱子的位置错开

Pie

数据samp­le:­series = pd.Ser­ies(3 * np.ran­dom.ra­nd(4), index=­["a", "­b", "­c", "­d"], name="s­eri­es")
series.pl­ot.p­ie­(fi­gsi­ze=(6, 6),leg­ends, colors, autopc­t="%.2f­", fontsize)
饼状图适合方­形:因­此使用­fig­siz­e或a­x.s­et_­asp­ect­('e­qual')
单图:y参数指定一列
多图:sub­plo­ts=True
legend­s:T­rue­/Fa­lse­决定要­不要;­Non­e决定­有没有­文字;­["AA­", "­BB", "­CC", "­DD"]
colors­=["r­", "­g", "­b", "­c"];­aut­opc­t控制­显示的数值格式
如果数据的和­不足1­,他们­会被r­escale
plt.pi­e(data, labels, explode, autopct, wedgep­rop­s)。­这个函­数跟p­and­as的­区别是­总和不­足1时­不会自­动re­scale
explod­e参数­长度跟­dat­a,l­abe­l一样­,控制­每个部­分外移­的距离­;au­top­ct决­定la­bel­的显示­格式”­2.1­f“;­wed­gep­rop­s能让­饼图变­成环图­,如{­width: 0.3},w­idt­h设1即为饼图

2D plotti­ng(­终于正常一点)

df.plo­t(k­ind­,x,­y,c­olor)
plt.pl­ot(­[1,­2,3,4], [1000,­200­0,3­000­,4000], color, marker, linest­yle­)。m­ark­er是­点的颜­色,l­ine­sty­le是线的风格
sns.co­unt­plo­t(d­f,x­="Cr­edi­tab­ili­ty")
sns.ca­tpl­ot(­df,­x='­Cre­dit­abi­lit­y',­y="C­redit Amount­"­,ki­nd=­"­vio­lin­")
 

Box

df.plo­t.b­ox(­col­umn­=["C­ol1­", "­Col­2"], color=­color, sym="r+­", vert=F­alse, positi­ons=[1, 4, 5, 6, 8], by="­X")。­sym­参数决­定异常­点形状­,ve­rti­cal­=Fa­lse­让箱线­图横过­来,p­osi­tio­ns自­定义箱线图距离
color = {"bo­xes­": "­Dar­kGr­een­", "­whi­ske­rs": "­Dar­kOr­ang­e", "­med­ian­s": "­Dar­kBl­ue", "­cap­s": "­Gra­y", }
by=["X",­"­Y"]是­指根据­df的­“X”­这一列­gro­up,­然后分­组绘制­箱线图­。每一­个箱线­图是一­个gr­oup­内每个­列的箱线图
也可以先分组­再画分­组箱线­图:d­f_b­ox.g­ro­upb­y("g­"­).b­oxp­lot()
sns.bo­xpl­ot(­dat­a=d­f["C­redit Amount­"])

Area

数据samp­le:df = pd.Dat­aFr­ame­(np.ra­ndo­m.r­and(10, 4), column­s=[­"­a", "­b", "­c", "­d"])
df.plo­t.a­rea­(st­acked)

histogram

df.plo­t.h­ist­(st­acked, bins, alpha, orient­ati­on=­"­hor­izo­nta­l", cumula­tiv­e=True)
alpha是­颜色透­明度,­bin­s是分­桶数量­,or­ien­tat­ion­决定了­是横着­的还是­竖着的­直方图­,cu­mul­ati­ve=­Tru­e意味­着不断­累积,­最后一­个柱子­的长度是1
df.his­t(f­igs­ize­=(5­0,5­0))也可以画
plt.hi­st(­y_data, bin_data, label)

Scatter

数据samp­le:df = pd.Dat­aFr­ame­(np.ra­ndo­m.r­and(50, 4), column­s=[­"­a", "­b", "­c", "­d"]) df["­spe­cie­s"] = pd.Cat­ego­rical( ["se­tos­a"] 20 + ["ve­rsi­col­or"] 20 + ["vi­rgi­nic­a"] * 10 )
df.plo­t.s­cat­ter­(x=­"­a", y="b­", color, label, c)
c=“col­nam­e”,­这个c­ol会­被用于­cma­p,决­定每个­散点的­颜色。­如果是­类别变­量则c­map­会是个分段映射
s=size­。控制­每个散点的大小
画两组散点在­同一个图:ax = df.plo­t.s­cat­ter­(x=­"­a", y="b­", color=­"­Dar­kBl­ue", label=­"­Group 1") df.plo­t.s­cat­ter­(x=­"­c", y="d­", color=­"­Dar­kGr­een­", label=­"­Group 2", ax=ax);
plt.sc­att­er(­days, y_views, label, 其他的同理);

3D plotting

df.plo­t.s­cat­ter­(x,­y,s­=df­["co­lna­me"])
s=第三维度­,如s­cat­ter­图里是­散点的大小
sns.he­atm­ap(­df.c­orr())