<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          讓你拍案叫絕的 5 個Matplotlib 騷操作!

          共 3072字,需瀏覽 7分鐘

           ·

          2020-09-15 13:36

          原作:Parul Pandey
          Python數(shù)據(jù)科學整理,東哥起飛

          大家都知道,Matplotlib是Python的可視化庫,功能很強,可以繪制各種圖。一些常規(guī)用法前不久分享過Matplotlib官方出品的cheatsheet:Matplotlib官方小抄手冊公開,配套可視化代碼已打包!
          但是!今天我們不走尋常路,專挑幾個賊騷的操作分享下
          1.?Span Selector
          Span Selector是Matplotlib中的鼠標小部件,widgets是用于包含一些交互功能的python對象。Span Selector可以通過鼠標框選,方便地查看選定區(qū)域的最大值和最小值。
          下面是代碼,首先創(chuàng)建一個基本折線圖作為例子。然后,我們調(diào)用SpanSelector方法并使用它來選擇一個區(qū)域,然后在該區(qū)域中顯示最大值和最小值。
          import?matplotlib.pyplot?as?plt
          from?matplotlib.widgets?import?SpanSelector
          def?onselect(xmin,?xmax):
          ????print(xmin,?xmax)
          ????return?xmin,?xmax
          fig,?ax?=?plt.subplots()
          ax.plot([1,2,3,4,5,6,7],?[10,?50,?100,?23,15,28,45])
          span =?SpanSelector(ax,?onselect,?'horizontal',?useblit=True,?rectprops=dict(alpha=0.5,?facecolor='red'))???????
          plt.show()
          下面是具體操作。
          2.?Broken?Barh
          Broken的水平條形圖是不連續(xù)具有間隙的圖,它可用于數(shù)據(jù)值相差很大的情況下,例如,包含極端溫度范圍的數(shù)據(jù)集。在這種情況下,Broken的水平條形圖非常合適,因為它們可以同時繪制最大和最小范圍。
          python模塊matplotlib.broken_barh()用于繪制Broken的水平條形圖。
          import?matplotlib.pyplot?as?plt?
          #Defining?the?x?and?y?ranges?
          xranges?=?[(5,5),?(20,5),(20,7)]?
          yrange?=?(2,1)?
          #Plotting?the?broken?bar?chart?
          plt.broken_barh(xranges,?yrange,?facecolors='green')?
          xranges?=?[(6,2),?(17,5),(50,2)]?
          yrange?=?(15,1)?
          plt.broken_barh(xranges,?yrange,?facecolors='orange')?
          xranges?=?[(5,2),?(28,5),(40,2)]?
          yrange?=?(30,1)?
          plt.broken_barh(xranges,?yrange,?facecolors='red')?
          plt.xlabel('Sales')?
          plt.ylabel('Days?of?the?Month')?
          plt.show()
          3. Table Demo
          Matplotlib的表格功能也是可以在圖中顯示表格的。當我們希望以條形圖的形式快速查看表格中的值時,這特別方便。表格可以放置在圖表的頂部,底部或側面。
          import?pandas?as?pd?
          import?numpy?as?np?
          import?matplotlib.pyplot?as?plt?
          x?=?np.random.rand(5,?8)*.7?
          plt.plot(x.mean(axis=0),?'-o',?label='average?per?column')?
          plt.xticks([])?
          plt.table(cellText=[['%1.2f'?%?xxx?for?xxx?in?xx]?for?xx?in?x],cellColours=plt.cm.GnBu(x),loc='bottom')?
          plt.show()
          4. Watermark Images
          有時候我們覺得可視化的背景太單調(diào)了,想增加點趣味性,比如將與數(shù)據(jù)相關的圖像作為水印覆蓋到可視化圖形上。下面就以NBA的詹皇為例試試水,最后呈現(xiàn)出詹皇的數(shù)據(jù),同時背景是詹皇本人。
          首先,導入要用的數(shù)據(jù)集,圖片和必要的庫pandas。
          import?numpy?as?np?
          import?matplotlib.image?as?image?
          import?matplotlib.pyplot?as?plt?
          import?pandas?as?pd?
          df?=?pd.read_csv('income.csv')?
          im?=?image.imread('Lebron_James.jpeg')?#?Image
          用pandas過濾掉僅由勒布朗組成的數(shù)據(jù)。
          lebron_james?=?df[df['Name']=='LeBron?James']
          然后像下面這樣操作,使用figimage添加水印就ok了。
          fig,?ax?=?plt.subplots()?
          ax.grid()?
          ax.plot('Year','earnings?($?million)',data=lebron_james)?
          ax.set_title("LeBron?James?earnings?in?US$(millions)")?
          fig.figimage(im,?60,?40,cmap='ocean',?alpha=.2)?
          plt.show()

          5. XKCD Plots
          下面這個操作更有趣味性(更騷)。如果你想讓Matplotlib圖上添加一些扭曲,可以簡單地xkcd()在pyplot對象上調(diào)用方法,如下所示。
          import?pandas?as?pd?
          import?matplotlib.pyplot?as?plt?
          df?=?pd.read_csv('https://raw.githubusercontent.com/parulnith/Website-articles-datasets/master/India%20GDP%20Growth%20Rate%20.csv',?parse_dates=['Year'])?
          df['Year']?=?df['Year'].apply(lambda?x:?pd.Timestamp(x).strftime('%Y'))?
          #calling?xkcd()?method?
          plt.xkcd(scale=5,?length=400)?
          df.plot(x='Year',y='GDP?Growth?(%)',kind='bar')?
          plt.ylabel('GDP?Growth?(%)')?
          plt.xticks(rotation=-20)?
          plt.figure(figsize=(10,8))?
          plt.show()

          文章參考:

          https://towardsdatascience.com/advanced-plots-in-matplotlib-part-1-30dbb02b09ae

          瀏覽 62
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  操多水美女在线视频 | 亚洲黄色A片 | 日韩无码人妻AV | 精品欧美性 | 欧美三级片在线播放 |