Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 国产一区三区二区中文在线,国精品一区二区三区,在线看片亚洲

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          dedecms織夢文章列表頁隔行換色/分組加線




          夢dedecms列表頁在文章列表上可能會有很多的樣式設置,但是如果是一個個性的網站,這里給大家介紹一個新的方法,就是隔行換色和分組加線。
          打開:inc_channel_unit_functions.php
          加入下面一段

          //zouql

          //$f 列表總數

          //$t 每組列表數

          function MyList($f,$t,$meid,$con)

          {

          if($meid%$t ==0 && $meid < $f)

          return $con;

          }


          例子:

          <ul>

          {dede:arclist row=20 titlelen=80 orderby=pubdate}

          <li [field:global name=autoindex function='MyList("20","2",@me,"class=\"color\"")'/]>[field:textlink/]</li>

          [field:global name=autoindex function='MyList("20","5",@me,"<li class=\"line\"></li>")'/]

          {/dede:arclist}

          </ul>


          上面例子中包含了2個用法:[field:global name=autoindex function='MyList("20","2",@me,"class=\"color\"")'/]和[field:global name=autoindex function='MyList("20","5",@me,"<li class=\"line\"></li>")'/]第一個,如果你定義了相關css,就是隔行變色第二個,如果你定義了相關css,就是隔5行加一橫線,20個列表加3個線不是4個

          三生繩一般都是情侶佩戴,寓意有三生三世,永結同心之說。編法不復雜,佩戴效果簡約大方。

          那今天我們來學習三生繩的編法。

          三生繩情侶佩戴的多用紅色,本命年的也同樣適用紅色,當然有些男孩子不喜歡紅色的也可以換成其他顏色來編,它所賦予的寓意都是一樣的。

          用紅色的來做個步驟圖。

          需要的是玉線,6根,長度約80厘米。用72號線或者12號股線也是一樣的,步驟也是一樣的。

          選取其中三條線,對折,扭線,也就是做成兩股辮,長度約2.5厘米,對折,整理下,打蛇結。扣眼做成。

          因為是要三條,所以我們把六條線分為三份,捋順,取旁邊的兩根。

          加上一條對折的玉線,其余四根線暫時往上放,或者用夾子固定住。

          開始編四股辮。

          蛇結固定,這里說明下,這個蛇結稍后要拆開的,所以寬送一點,確保四股辮的結尾不會散開即可。

          把已經編好的四股辮放上去,換第二組的兩根線下來,同樣也要編四股辮。

          先加上對折的一條線,共四條線。

          開始編四股辮。

          第二根結束。

          那么你們應該也猜到了,第三組同樣也是如上的步驟。

          先加線。

          編四股辮。三組全部編完了。

          毫無懸念,編繩其實只要有編繩基礎,加上一懂步驟,那么就很輕松的上手了,沒什么訣竅,關鍵在于練習。

          三個蛇結都是比較寬松的,三組四股辮對齊以后就要拆除了。

          對齊后取十二條線中較長的一根,繞住全部的線,最后一圈的時候就圈把線穿過,拉緊,剪去多余的,留下約兩厘米的線頭,火燒固定。


          ?

          剪去其中位置靠中間的七根線,燒頭,余下的四根線打蛇結,把燒頭的位置藏住。

          再剪去中間的兩根線,燒頭,余下的兩根線打蛇結,把這個的痕跡包住。

          余下的兩根線合并一起,燒細拉長,穿過一個平安扣。

          這里插一個訣竅,平安扣如果打結的話,燒頭之后結會鼓出來,不是很美觀,那么我們就不打結,只需要留出一段大學三厘米的線。

          直接把線頭燒融化,往平安扣面輕輕按一下,就可以形成一個固定住平安扣的點了。這個除非線留短了,否則都會卡得很結實,不會脫落的。

          平安扣穿過扣眼。整個編法的步驟就完成了。

          如果看不明白有任何問題的歡迎留言,看到會回復噠。

          歡迎點贊給我加油,會努力更新,謝謝。

          表元素調校

          一張可視化圖上除了主要的點、線、面之外,文本標簽、坐標軸標簽等也是很重要的可視媒介,特別是對于信息圖表而言。 下面這張圖基本囊括了用到的圖形元素。

          figure上的圖元

          加文本可以通過 ax.text(x,y, "Text") 。添加標題通常寫ax.set_title(),另外也可以用ax.title.set_text('title')或ax.set(title='ttl')設置標題, 整理如下:

          • ax.text(x,y, "Text"):在坐標[x,y]處添加文本Text,文本支持latex公式,如ax.text(2,6, r'$E=mc^2$', fontsize=15);
          • ax.set_title():添加標題;
          • ax.set_ylim(0,4) 設置y軸值的范圍(類似于函數的值域),例如對于y=[],直接ax.plot(y)畫出來的折線圖y軸范圍是 ,通過ax.set_ylim(0,4) 可以顯示0~100范圍的效果。同理通過ax.set_ylim(0,4)設置x軸范圍(定義域);
          • ax.set_ylabel("Y axis label"):給y軸加上坐標軸標題;
          • ax.tick_params(which='major', width=1.0):細調坐標軸刻度;
          • ax.legend() : 設置圖例 ;


          常用圖表標簽添加的接口

          圖形元素設置除了文本類型之外,也可以往里加形狀 。

          • 加線:import matplotlib.lines as lines;ax.add_artist(lines.Line2D([15,15], [0, 10],color='#1EAFAE')),其效果可參考矩陣圖繪制效果;
          • 加帶箭頭的線: ax.arrow(0, 0, 0.5, 0.5, head_width=0.05, head_length=0.1, fc='k', ec='k');
          • 加一個垂直的平均線: ax.axvline(x, ls='--', color='r'),那水平平均線呢?axhline(y=0, xmin=0, xmax=1, **kwargs);
          • 加垂直或水平的強調矩形: ax.axhspan(ymin, ymax, xmin=0, xmax=1, **kwargs) 和 ax.axvspan(xmin, xmax, ymin=0, ymax=1, **kwargs);
          • 加矩形:patches.append(mpatches.Rectangle([0.5, 0.5], 0.5,0.8)),可用于繪制甘特圖;
          • 加圓形(及橢圓): patches.append( mpatches.Ellipse((x,y), width, height));
          • 加帶箭頭的形狀:ax.annotate('箭頭文本', xy=(4,5), xytext=(3,2),color, arrowprops=dict( arrowstyle='->', connectionstyle="arc3")),加圖標型的箭頭:patches.append( mpatches.Arrow(x,y, dx,dy,width));
          • 加圖片: mpimg.imread(ipath); ax.axis('off'); ax.imshow(img);

          給散點圖加標簽并加分隔線繪制矩陣圖以實踐一下以上方法:

          import matplotlib.lines as lines
          fig, ax= plt.subplots()
          ax.plot(df['z'],df['y'],'o')
          ax.add_artist(lines.Line2D([70,70], [30,100],color='#000000',lw=3)) #是[x1,x2],[y1,y2] 不是[x1,y1],[x2,y2]
          ax.add_artist(lines.Line2D([30,100], [65,65],color='#000000',lw=3))
          ax.set_xlim(30,100)
          ax.set_ylim(30,100)
          ax.set_xlabel("z")
          ax.set_ylabel("y")


          矩陣圖繪制示例

          繪制瀑布圖綜合運用ax.bar()的參數和文本標簽,并封裝為一個函數,以后使用只需要調用就好:


          Matplotlib繪制瀑布圖示例


          #瀑布圖
          x=[17,-3,7,6] #原始數據
          def waterfall_chart(x):
              j=0 #sum(x) 最終柱的結果
              k=0 #k=x[i-1]
              x0=[]
              for i in x:
                  if i<0:
                      x0.append(j+i)
                  else:
                      x0.append(j)
                  j+=i
              x1=[abs(i) for i in x]
              c1=['#1EAFAE' if i>0 else '#69FFFF' for i in x]
              c1.append('#BA5C25')
              x0[0]=0
              x0.append(0)
              x1.append(j)
              x.append(j)
              w=list(range(1,len(x)+1))
              fig,ax= plt.subplots(figsize=(6,5))
              ax.bar(w,x0,alpha=0) #都透明度為0了,顏色不重要
              rects=ax.bar(w,x1,bottom=x0,color=c1) #顏色可傳一個數組的
              ax.set_ylim(0, 30)
              i=0
              for rect in rects: #加上適當的文本標簽 
                  height = rect.get_height()+x0[i]
                  ax.annotate('{}'.format(x[i]),
                          xy=(rect.get_x() + rect.get_width() / 2, height),
                          xytext=(0,1),  # 1 points vertical offset
                          textcoords="offset points",
                          ha='center', va='bottom')
                  i+=1
              ax.set_xticklabels(['','Q1','Q2','Q3','Q4','Ys'])
              return ax
          waterfall_chart(x)

          組合圖

          為了更好地展現數據間的聯系或變化,我們有時會需要將多種圖表類型用在同一張可視化圖里,一種是共用坐標軸的組合圖,例如面積圖+柱狀圖的組合、散點+折線圖就是很基礎的組合圖。另一種是雙坐標軸,很常見的圖是左邊的y軸是月活,畫柱狀圖,右邊的y軸是增長率,畫折線圖。



          棒棒糖圖(Lollipop)是將條形圖的柱變得很細并突出末端的一類圖,形似棒棒糖,特別適合于展示分類標簽很多的數據。可以通過將柱狀圖和散點圖結合的方法繪制,Matplotlib庫繪制起來并不復雜,代碼如下。但對于一些散點圖的y軸不支持分類標簽的庫來說,要畫棒棒糖圖還是挺復雜的。

          y = [5, 4, 11, 10, 15, 11, 13, 8,13,15,13,19]
          x=['c'+str(i) for i in range(len(y))]
          
          fig, ax= plt.subplots(figsize=(6,6)) 
          ax.barh(x,y,height=0.08,zorder=1) #圖層順序的解決方案
          ax.scatter(y,x,zorder=2,color='#ba5c25')

          有時為了對比兩類數據,除了用簇狀柱形圖或簇狀條形圖外,也可以試試啞鈴圖,理解了上面畫棒棒糖圖的方法之后,要組合出啞鈴圖并不難,對數據進行一定運算后用barh加兩個scatter就可以畫出來。



          帕累托圖是雙坐標軸的可視化典例。帕累托圖特別適合展示符合長尾效應的數據。matplotlib給我們提供了ax.twinx()用于生成共用x軸的另一個Axes,效果就是左邊的y軸比例尺和右邊比例尺不一定一樣,能更好地將兩類圖進行效果組合。

          y=[23,162,51,119,12,3,8] #模擬數據
          x=[str(i) for i in range(2,len(y)+2)]
          y=sorted(y,reverse=True)
          ysum=sum(y)
          y2=[]
          cc=0
          for i in y:
              cc+=i
              y2.append(cc/ysum*100)
          fig = plt.figure()
          ax1 = fig.add_subplot(111)
          rects=ax1.bar(x,y,color='#1EAFAE')
          ax1.set_ylabel('Month IC')
          ax1.set_ylim(0, 180)
          ax2 = ax1.twinx() 
          #https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.twinx.html#matplotlib.axes.Axes.twinx
          ax2.set_ylim(0, 100)
          ?
          ax2.plot(x, y2,'o',color='#FFA069',linewidth=2,ls='-')
          ?
          ax2.set_ylabel('%')
          ?
          for rect in rects:
              height = rect.get_height()
              ax1.annotate('{}'.format(height),
                      xy=(rect.get_x() + rect.get_width() / 2, height),
                      xytext=(0,1),  # 1 points vertical offset
                      textcoords="offset points",
                      ha='center', va='bottom')
          ax1.set_title("Pareto in Matplotlib") #


          Matplotlib繪制帕累托圖

          子圖

          除了組合圖外,有時候我們也需要將多個圖并排以展現某種數據關系。前面說過一個畫布下可以有多套Axes,正常情況下我們只需要一套Axes用來畫圖,但是也經常需要在一個畫布中畫多張圖,形成分面或子母圖的效果,前面我們基本都是寫fig, ax= plt.subplots(),實際上subplots()可以設置nrows、ncols參數生成多套Axes。

          plt.subplots()的常用寫法有:

          • plt.subplot(3,2,4):在全局繪圖區域中建立3行、2列的分區繪圖區域,并定位到第4個子圖區域,返回一個axes;
          • plt.subplot(324): 效果和上面subplot(3,2,4)的寫法一致;
          • plt.subplots(): 默認1行1列,生成的axes就是一個;
          • plt.subplots(3,2) : 沒有指定繪圖編號,返回值包括一個figure和多個axes,和ax[0, 0].×××(x, y)搭配著用;
          • fig = plt.figure(); ax= fig.add_subplot(221):先建立一個畫布,在畫布上添加2x2個子圖,并定位到順序第一個子圖;


          生成多個繪圖區域


          圖中代碼在全局繪圖區域中建立n行、m列的分區繪圖區域,并定位到其中一個子圖區域。之后ax的用法和前面一致,不贅述。


          生成的圖片在shell環境中彈出的界面有保存圖片的按鍵,在jupyter環境中可以點擊圖片然后右鍵保存。而如果要通過代碼保存圖片到本地,一般通過plt.savefig(fname,dpi=300)保存圖片,參數有文件保存路徑(fname)、圖片每英寸像素(dpi)、邊緣顏色(edgecolor)等。在shell環境中一般通過plt.show()展示圖片,而jupyter notebook中通常寫%matplotlib inline將圖片直接在Out[]里輸出展示。


          Matplotlib的rcParams接口可以設置很多個性化內容,包括剛提到的savefig的edgecolor默認值,可以寫mpl.rcParams["savefig.edgecolor"]='blue'改變原來的默認值white。直方圖的默認分箱數可以通過rcParams["hist.bins"]=5改變。

          而為了在Matplotlib中支持中文,各教程的解決方案基本都有mpl.rcParams['font.family']='SimHei'這句,就是將Matplotlib的字體替換為微軟雅黑。前面基礎圖表繪制部分通過更新mpl.rcParams["axes.prop_cycle"]改變了繪圖的主題色,Matplotlib本身是提供了備選的繪圖渲染的各種主題,可以通過style.use('ggplot')調用ggplot主題(想換回默認主題用style.use('default'))。就像給輸入法換皮膚一樣,rcParams接口給了我們更多的自由度和個性化。

          三維及科學可視化

          三維可視化和科學可視化是Matplotlib特別擅長的領域,人類作為三維生物,對三維的圖像有一定的偏好,扁平化和三維各有優勢,各有不同的應用場合,能畫好二維可視化圖也該會畫三維的圖表,且一些場景用好三維有奇效。Matplotlib的三維可視化封裝在mpl_toolkits工具套件的mplot3d里,mplot3d下的API主要包括Axes3D(三維坐標軸區域)、art3d.xx3D(三維圖元)和proj3d(三維坐標變換)。



          from mpl_toolkits.mplot3d import Axes3D  # noqa: F401 unused import
          fig = plt.figure()
          ax = fig.add_subplot(111, projection='3d')
          ax.bar(df['x'],df['y'], zs=0, zdir='y', alpha=0.8)
          ax.bar(df['x'],df['z'], zs=1, zdir='y', alpha=0.8)
          ax.bar(df['x'],df['y'], zs=2, zdir='y', alpha=0.8)
          ax.set_xlabel('X')
          ax.set_ylabel('Y')
          ax.set_zlabel('Z')
          
          ax.set_yticks([0,1,2])

          三維可視化和科學可視化聯系很緊密,科研作圖中應用廣泛,各種漂亮的參數曲面在官網示例里有很多,這里略過、當然二維下也能畫出很優美的函數圖像,結合numpy生成[0,2]之間的正弦函數曲線只需要4行代碼:

          t = np.arange(0.0, 2.0, 0.01)
          s = 1 + np.sin(2 * np.pi * t)
          fig, ax = plt.subplots()
          ax.plot(t, s)


          繪制指數函數、分形的雪花曲線也是類似的過程,在官網案例集有類似的例子,具體這里不展開。


          matplotlib可視化思維導圖


          總結下本文從Matplotlib的可視化基礎框架一步步畫散點、折線、柱狀、箱線等圖,通過理解參數拓展畫了瀑布圖、矩陣圖、棒棒糖圖等,并且微調坐標軸文本、標題等圖形元素,讓可視化更完備,通過雙y軸繪制帕累托圖等組合圖,也繪制了包含多張子圖的圖和三維圖。

          通過以上實踐可以看到的Matplotlib可視化語法的特點是繪圖對象和標簽標題等元素有一定獨立性,且有不同層級的接口可以用來微調元素,例如設置標題就有多種寫法 ,Matplotlib不同于ggplot2的管道寫法、也不同于Altair等庫將數據傳到chart對象再調用mark_bar()等確定繪制什么圖。可視化是要好看,也不能忘了所展現的數據與數據間的關系是重點。

          最后用極坐標繪心形線結束本文。



          文中代碼更新于https://github.com/QLWeilcf/VisualizedLyn/blob/master/viz-matplotlib-in-action-lyns.ipynb。代碼可以直接下載運行。有任何建議歡迎留言交流。


          主站蜘蛛池模板: 国产精品日韩一区二区三区| 日本在线视频一区| 国产成人精品无人区一区| 97精品国产一区二区三区| 一区二区三区在线观看视频| av一区二区三区人妻少妇| 中文字幕日韩一区二区三区不卡| 国产天堂一区二区综合| 日韩一区二区三区在线 | 亚洲av日韩综合一区二区三区| 国产一区二区三区乱码| 精品一区二区三区色花堂| 国产精品福利一区| 国产一区二区三区亚洲综合| 动漫精品第一区二区三区| 韩国一区二区三区| 无码人妻精一区二区三区| 一区二区三区在线观看| 亚洲综合av一区二区三区不卡| 人妻激情偷乱视频一区二区三区| 中文人妻无码一区二区三区| 国精产品一区一区三区免费视频 | 亚洲一区动漫卡通在线播放| 久久精品无码一区二区三区| 制服丝袜一区二区三区| 高清国产精品人妻一区二区 | 国产精品一区电影| 男人的天堂亚洲一区二区三区 | 无码人妻久久一区二区三区免费| 国产av天堂一区二区三区| 无码人妻精品一区二区三区66| 日韩精品无码一区二区视频| 一区二区乱子伦在线播放| 无码aⅴ精品一区二区三区浪潮| 国产成人高清视频一区二区| 精品国产一区二区三区在线观看| 亚洲线精品一区二区三区影音先锋 | 中文字幕视频一区| 久久久久久人妻一区二区三区| 日本高清天码一区在线播放| 一区二区三区免费电影|