开心六月综合激情婷婷|欧美精品成人动漫二区|国产中文字幕综合色|亚洲人在线成视频

    1. 
      
        <b id="zqfy3"><legend id="zqfy3"><fieldset id="zqfy3"></fieldset></legend></b>
          <ul id="zqfy3"></ul>
          <blockquote id="zqfy3"><strong id="zqfy3"><dfn id="zqfy3"></dfn></strong></blockquote>
          <blockquote id="zqfy3"><legend id="zqfy3"></legend></blockquote>
          打開APP
          userphoto
          未登錄

          開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

          開通VIP
          用Python把圖做美點(diǎn):給柱狀圖穿個(gè)衣服

          最近老看見各種加了背景的柱狀圖,比如一下這樣的

          好像是華爾街日?qǐng)?bào)的

          于是嘗試了一下用Matplotlib做了一下


          由于作者比較懶惰,y值就隨機(jī)生成了

          from matplotlib import pyplot as pltimport randomrandom.seed(33)y1=[random.randint(40,50) for i in range(5)]y2=[random.randint(30,40) for i in range(5)]y3=[random.randint(20,30) for i in range(5)]y4=[random.randint(10,20) for i in range(5)]y5=[random.randint(0,10) for i in range(5)]y6=[i for i in range(2011,2016)] x=[i*2-1 for i in range(1,6)]


          其實(shí)思路很簡(jiǎn)單,就是在堆積柱狀圖后面加一個(gè),面積圖做背景,然后面積圖的顏色設(shè)置比柱狀圖淺一點(diǎn)就行了。

          柱狀圖很好畫的,再根據(jù)柱狀圖的參數(shù),算一下面積圖的位置就好。

          因?yàn)橐诿娣e圖里留出柱狀圖的位子,計(jì)算


          x2=[]for i in range(len(x)):    a=x[i]-0.5    b=x[i]+0.5    x2.append(a)    x2.append(b)y11=[]for i in range(len(y1)):    a=y1[i]    b=y1[i]    y11.append(a)    y11.append(b)y12=[]for i in range(len(y1)):    a=y2[i]    b=y2[i]    y12.append(a)    y12.append(b)y13=[]for i in range(len(y1)):    a=y3[i]    b=y3[i]    y13.append(a)    y13.append(b)y14=[]for i in range(len(y1)):    a=y4[i]    b=y4[i]    y14.append(a)    y14.append(b)y15=[]for i in range(len(y1)):    a=y5[i]    b=y5[i]    y15.append(a)    y15.append(b)    


          fig = plt.figure(figsize=[10,7.5],facecolor=(239/255,248/255,253/255))ax1=fig.add_subplot(1,1,1,facecolor=(239/255,248/255,253/255))

          先建一個(gè)帶著背景顏色的畫布和圖層,然后把各種沒用的邊框去掉,畫上網(wǎng)格線

          ax1.spines['top'].set_visible(False)#去掉左邊邊框ax1.spines['bottom'].set_visible(False)#去掉下方邊邊框ax1.spines['right'].set_visible(False)#去掉右邊邊框ax1.spines['left'].set_visible(False)#去掉左邊邊框ax1.grid(True, 'major', 'y', ls='--', lw=.5, c='black', alpha=.3)#'x'是豎著的,y是橫著的,both是都畫,major是主坐標(biāo),minor是附坐標(biāo),linstyle,color,alphaax1.xaxis.set_major_formatter(plt.FuncFormatter(''.format)) #X軸不顯示刻度ax1.yaxis.set_major_formatter(plt.FuncFormatter('{:.0f}%'.format))#Y軸顯示為原有數(shù)字加%plt.xticks(range(0, 11, 2), fontsize=14)#設(shè)置X軸的的刻度plt.yticks(range(0, 90, 10), fontsize=14)#設(shè)置Y軸的刻度

          然后一層層 把圖畫上去,因?yàn)槊娣e圖在下面,所以先畫

          ax1.stackplot(x2,y11,color=(253/255,222/255,194/255),alpha=1)ax1.stackplot(x2,y12,color=(188/255,205/255,225/255),alpha=1)ax1.stackplot(x2,y13,color=(239/255,194/255,188/255),alpha=1)ax1.stackplot(x2,y14,color=(237/255,231/255,195/255),alpha=1)ax1.stackplot(x2,y15,color=(215/255,215/255,215/255),alpha=1)ax1.bar(x,y1,width=1,color=(243/255,133/255,36/255))ax1.bar(x,y2,width=1,color=(65/255,113/255,156/255))ax1.bar(x,y3,width=1,color=(200/255,35/255,52/255))ax1.bar(x,y4,width=1,color=(195/255,169/255,48/255))ax1.bar(x,y5,width=1,color=(100/255,100/255,100/255))ax1.plot([0.5,9.5],[0,0],color='black',linewidth=5) # 人工做一個(gè)坐標(biāo)軸ax1.text(10,12,'Eurapo Central',ha='left',va='center',fontsize=14.5,color=(195/255,169/255,48/255))# 計(jì)算好文字的位置,ha表示文字左右對(duì)齊,left就是表示文字左邊的位置和x值重合,center就是文字中間的位置for a,b in zip(x,y6):    ax1.text(a,-2,b,ha='center',va='bottom',fontsize=14.5)#在底部的坐標(biāo)軸上寫上年份感覺人工做方便多了,哈哈哈 
          本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
          打開APP,閱讀全文并永久保存 查看更多類似文章
          猜你喜歡
          類似文章
          可視化常見繪圖(一)堆疊圖
          【python入門項(xiàng)目】在 Python 中創(chuàng)建條形圖追趕動(dòng)畫
          Python可視化:用Matplotlib畫個(gè)玫瑰圖
          5 種使用 Python 代碼輕松實(shí)現(xiàn)數(shù)據(jù)可視化的方法
          Python可視化庫(kù)matplotlib庫(kù)各種圖demo
          Jupyter Notebook的27個(gè)竅門,技巧和快捷鍵
          更多類似文章 >>
          生活服務(wù)
          分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
          綁定賬號(hào)成功
          后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
          如果VIP功能使用有故障,
          可點(diǎn)擊這里聯(lián)系客服!

          聯(lián)系客服