91aaa在线国内观看,亚洲AV午夜福利精品一区二区,久久偷拍人视频,久久播这里有免费视播

<strong id="fvuar"></strong>

  • <sub id="fvuar"><dl id="fvuar"><em id="fvuar"></em></dl></sub>

    1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

      手機站
      千鋒教育

      千鋒學(xué)習(xí)站 | 隨時隨地免費學(xué)

      千鋒教育

      掃一掃進入千鋒手機站

      領(lǐng)取全套視頻
      千鋒教育

      關(guān)注千鋒學(xué)習(xí)站小程序
      隨時隨地免費學(xué)習(xí)課程

      當前位置:首頁  >  技術(shù)干貨  > 數(shù)據(jù)可視化字體與折線圖繪制

      數(shù)據(jù)可視化字體與折線圖繪制

      來源:千鋒教育
      發(fā)布人:wjy
      時間: 2022-08-12 15:26:00 1660289160

      ### matplotlib 中的字體管理

      使用 matplotlib 可視化數(shù)據(jù)時,經(jīng)常要面對字體設(shè)置的問題。在要用到中文時,如果設(shè)置不當,會出現(xiàn)亂碼。網(wǎng)上已經(jīng)有很多文章提供了一些解決方法,但多數(shù)是片段式的“授人以魚”,本文將系統(tǒng)地討論 matplotlib 中的字體管理,希望能“授人以漁”。

      環(huán)境:Windows 10 + anaconda (python 3.8) + matplotlib 3.5

      如果你的環(huán)境不同,相關(guān)程序安裝位置不同,一些細節(jié),如路徑、數(shù)量等可能會有一些差異,但“對應(yīng)”到你的環(huán)境即可。

      matplotlib 中使用的字體來源于三個途徑:

      1. matplotlib 自帶的字體;
      2. windows 系統(tǒng)字體;
      3. 用戶提供的第三方字體。

      **注意**

      1. 實際中不建議調(diào)用用戶字體目錄中的第三方字體文件;
      2. 有很多特殊的字體不兼容,會報錯

      #### windows 10 系統(tǒng)字體

      Windows 系統(tǒng)字體文件保存在 `C:\Windows\Fonts` 文件夾中,在資源管理器中打開這個文件夾,一般是以大圖標的形式顯示,看起來是這樣的:

      屏幕快照 2021-04-30 下午4.33.29

      字體系列,相當于一個子文件夾,可以進一步打開,如下圖

      屏幕快照 2021-04-30 下午4.36.02

      屏幕快照 2021-04-30 下午4.41.53

      在 windows 中,字體是以“字體文件”的形式保存的,但在應(yīng)用軟件中為了調(diào)用的直觀性和方便性,則是通過字體的“名稱”屬性來調(diào)用的。

      #### 字體文件的類型和字體類型

      字體文件格式和字體類型繁多,常見的有:

      字體文件:`.TTF, .FON, .TTC, .AFM`等后綴(格式)。

      字體類型:`OpenType, TrueType, 光柵` 等類型。

      **光柵字體(.FON)**:是針對特定的顯示分辨率以不同大小存儲的位圖,用于Windows系統(tǒng)中屏幕上的菜單、按鈕等處文字的顯示。它并不是以矢量描述的,放大以后會出現(xiàn)鋸齒,只適合屏幕描述。不過它的顯示速度非常快,所以作為系統(tǒng)字體而在Windows中使用。

      **矢量字體(.FON)**

      雖然擴展名和光柵字體一樣,但是這種字體卻是由基于矢量的數(shù)學(xué)模型定義的,是Windows系統(tǒng)字體的一類,一些windows應(yīng)用程序會在較大尺寸的屏幕顯示中自動使用矢量字體來代替光柵字體的顯示。

      .fon 字體文件其實是標準的windows可執(zhí)行文件(.exe)格式,分NE(New Executable)和PE(Portable Executable)兩種類型,字體作為資源存在其中。
      **TrueType字體(.TTF)**

      TrueType是由美國蘋果公司和微軟公司共同開發(fā)的一種電腦輪廓字體(曲線描邊字)類型標準。這是我們?nèi)粘2僮髦薪佑|得最多的一種類型的字體,其最大的特點就是它是由一種數(shù)學(xué)模式來進行定義的基于輪廓技術(shù)的字體,這使得它們比基于矢量的字體更容易處理,保證了屏幕與打印輸出的一致性。同時,這類字體和矢量字體一樣可以隨意縮放、旋轉(zhuǎn)而不必擔心會出現(xiàn)鋸齒。

      OpenType標準還定義了 OpenType 文件名稱的后綴名。包含 TrueType 字體的OpenType文件后綴名為.ttf,包含PostScript字體的文件后綴名為.OTF。如果是包含一系列TrueType字體的字體包文件,那么后綴名為.TTC。

      **.AFM** Adobe Font Metrics

      這由Adobe公司開發(fā),并包含了有關(guān)Type 1 PostScript 字體的度量特性的信息。AFM結(jié)構(gòu)需要一個定義了每一個字體符號的樣式的控制模版。它主要被用于UNIX。

      #### matplotlib 字體管理

      matplotlib 的matplotlib.font_manager 模塊,用于跨平臺查找、管理和使用字體。

      這個模塊提供了一個可以跨后端(backend)和平臺共享的 FontManager 實例。其中的 findfont 函數(shù)在返回本地或系統(tǒng)字體路徑中與指定的 FontPropeties 實例匹配的最佳 TrueType (TTF) 字體文件。FontManager還處理 PostScript 后端使用的 Adobe Font Metrics (AFM) 字體文件。

      也就是說 matplotlib 主要處理和使用 TTF, AFM 兩種字體。

      字體文件可以保存在 matplotlib 的 fonts 文件夾下,也可以保存在系統(tǒng)字體路徑中。

      > matplotlib 的字體文件夾路徑如下:
      > C:\Users\用戶名\anaconda3\Lib\site-packages\matplotlib\mpl-data\fonts

      該文件夾下有三個子文件夾,保存的都是 TTF, AFM 格式的字體文件。其中的 ttf 文件夾中約有 40 個 TTF 字體文件。

      屏幕快照 2021-04-30 下午4.54.16

      打開 matplotlib 的 .fonts/ttf 文件夾,顯示如下

      屏幕快照 2021-04-30 下午4.53.18

      #### matplotlib的 font_manager 模塊

      font_manager 模塊主要設(shè)計了3個類:

      - .FontEntry:FontEntry 主要供 matplotlib 平臺管理、存儲可用字體屬性使用。我們可以用它來統(tǒng)一 matplotlib 繪圖的字體,減少多圖中字體設(shè)置的重復(fù)勞動。
      - .FontManager:FontManager 類提供了字體管理功能。
      - .FontProperties, 這個是一般用戶最常用的類,用法與`FontEntry`相似。定義一個 `FontProperties`實例,可以設(shè)置 text 對象的全部屬性,并可以重復(fù)使用。無需在創(chuàng)建 text 時一個一個的設(shè)置。

      ```python
      %matplotlib inline

      import matplotlib as mpl
      import matplotlib.pyplot as plt
      import numpy as np
      import matplotlib.font_manager as fm

      x = np.arange(0, 10, 0.2)
      y = np.sin(x)

      # strech,拉伸,相當于word中的字體加寬
      font_S = fm.FontProperties(family='Stencil',size=24, stretch=0)
      font_M = fm.FontProperties(family='Mistral',size='xx-large',stretch=1000, weight='bold')

      fig = plt.figure(constrained_layout=True)

      ax = fig.add_subplot(111)
      ax.set_title('Axes\'s Title', fontproperties = font_S)
      ax.set_xlabel('xaxis label', fontproperties=font_M)

      ax.plot(x,y)

      plt.show()
      ```

      #### matplotlib 常用中文字體名稱對照表

      Windows的字體對應(yīng)名稱,根據(jù)需要自行更換!

      > 黑體 SimHei
      > 微軟雅黑 Microsoft YaHei
      > 微軟正黑體 Microsoft JhengHei
      > 新宋體 NSimSun
      > 新細明體 PMingLiU
      > 細明體 MingLiU
      > 標楷體 DFKai-SB
      > 仿宋 FangSong
      > 楷體 KaiTi
      > 仿宋_GB2312 FangSong_GB2312
      > 楷體_GB2312 KaiTi_GB2312

      #### matplotlib 中文亂碼問題的解決

      在matplotlib中,在使用中文的時候經(jīng)常會出現(xiàn)一些亂碼的問題,如中文會變成小方格子。有以下幾種解決方案:

      ##### 方法一:修改配置文件matplotlibrc(不推薦這樣做)

      ```python
      #使用下面的命令查看配置文件位置

      import matplotlib
      matplotlib.matplotlib_fname()
      ```

      結(jié)果:

      ```
      C:\\Users\\你的用戶名\\anaconda3\\lib\\site-packages\\matplotlib\\mpl-data\\matplotlibrc
      ```

      比如要添加黑體,步驟:

      > 1. 一般在C:\Windows\Fonts 里可以找到`黑體常規(guī)`字體文件
      >
      > 2. 將字體文件拷貝至:C:\\Users\\你的用戶名\anaconda3\\lib\\site-packages\\matplotlib\\mpl-data\fonts\ttf中
      >
      > 3. 用寫字板或記事本打開matplotlibrc文件:
      >
      > - 刪除 font.family 前面的 # 并將冒號后面改為“SimHei”;
      >
      > - 刪除 font.sans-serif 前面的 # 并在冒號后面添加“SimHei”
      >

      屏幕快照 2021-04-30 下午5.13.54


      >
      > 4. 修改后保存,重新運行程序。

      ##### 方法二:動態(tài)設(shè)置參數(shù)(可用)

      在python腳本中動態(tài)設(shè)置matplotlibrc,這樣就避免了更改配置文件的麻煩,方便靈活,例如:

      ```在python腳本中動態(tài)設(shè)置matplotlibrc,這樣就避免了更改配置文件的麻煩,方便靈活,例如:import matplotlib as mplmpl.rcParams[‘font.sans-serif] = [‘SimHei’]
      import matplotlib as mpl
      mpl.rcParams[‘font.sans-serif] = [‘SimHei’]
      ```

      由于更改了字體導(dǎo)致顯示不出負號,將配署文件中axes.unicode minus : True修改為False 就可以了,當然這而可以在代碼中完成。

      ```python
      import matplotlib as mpl
      mpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默認字體
      mpl.rcParams['axes.unicode_minus'] = False # 解決保存圖像是負號’-'顯示為方塊的問題
      ```

      ##### 方法三:使用字體管理器(推薦的方法)

      優(yōu)點:直接在代碼中指定中文字體文件,在每個出現(xiàn)中文的地方指定 fontproperties為剛才設(shè)置的字體;

      缺點:每個出現(xiàn)中文的地方如title都要指定字體,并不是每個地方如legend都提供指定字體的參數(shù)。

      ```python
      myfont = matplotlib.font_manager.FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14)
      ```

      直接設(shè)置為中文時

      ```python
      ax.set_title(u'matplotlib中文顯示測試', fontproperties = myfont)
      ```

      還可以直接:

      ```python
      ax.set_title(u'matplotlib中文顯示測試', fontproperties='SimHei')
      ```

       

      ### 折線圖

      折線圖用于分析自變量和因變量之間的趨勢關(guān)系,最適合用于顯示隨著時間而變化的連續(xù)數(shù)據(jù),同時還可以看出數(shù)量的差異,增長情況。

      Matplotlib 中繪制散點圖的函數(shù)為 plot() ,使用語法如下:

      > `matplotlib.pyplot.plot`(**args*, *scalex=True*, *scaley=True*, *data=None*, ***kwargs*)

      (1)簡單的折線圖

      在matplotlib面向?qū)ο蟮睦L圖庫中,pyplot是一個方便的接口。plot()函數(shù):支持創(chuàng)建單條折線的折線圖,也支持創(chuàng)建包含多條折線的復(fù)式折線圖----只要在調(diào)用plot()時傳入多個分別代表X軸和Y軸數(shù)據(jù)的list列表即可。

      ```python
      import matplotlib.pyplot as plt

      x_data = ['2011','2012','2013','2014','2015','2016','2017']
      y_data = [58000,60200,63000,71000,84000,90500,107000]

      plt.plot(x_data,y_data)
      plt.show()
      ```

      屏幕快照 2021-08-31 下午5.36.12

      (2)復(fù)式折線圖:

      ```python
      import matplotlib.pyplot as plt
      x_data = ['2011','2012','2013','2014','2015','2016','2017']
      y_data = [58000,60200,63000,71000,84000,90500,107000]
      y_data2 = [52000,54200,51500,58300,56800,59500,62700]

      plt.plot(x_data,y_data,color='red',linewidth=2.0,linestyle='--')
      plt.plot(x_data,y_data2,color='blue',linewidth=3.0,linestyle='-.')
      plt.show()
      ```

      屏幕快照 2021-08-31 下午5.34.19

      注:

      說明:

      參數(shù)color=’ red ‘,可以換成color=’ #054E9F’,每兩個十六進制數(shù)分別代表R、G、B分量,除了使用red、blue、green等還可以參照下圖

      屏幕快照 2021-08-31 下午5.43.38

      參數(shù)linestyle可以選擇使用下面的樣式:

      > '-' solid line style 表示實線
      >
      > '--' dashed line style 表示虛線
      >
      > '-.' dash-dot line style 表示短線、點相間的虛線
      >
      > ':' dotted line style 表示點線

      參數(shù) linewidth 可以指定折線的寬度

      參數(shù) marker 是指標記點,有如下的:

      屏幕快照 2021-08-31 下午5.43.53

      (3)管理圖例
      對于復(fù)式折線圖,應(yīng)該為每條折線添加圖例,可以通過legend()函數(shù)來實現(xiàn)。該函數(shù)可傳入兩個list參數(shù),其中第一個list參數(shù)(handles參數(shù))用于引用折線圖上的每條折線;第二個list參數(shù)(labels)代表為每條折線所添加的圖例

      ```python
      import pandas as pd
      import matplotlib.pyplot as plt

      #讀取數(shù)據(jù)
      data = pd.read_excel('matplotlib.xlsx')

      plt.figure(figsize=(10,5))#設(shè)置畫布的尺寸
      plt.title('Examples of line chart',fontsize=20)#標題,并設(shè)定字號大小
      plt.xlabel(u'x-year',fontsize=14)#設(shè)置x軸,并設(shè)定字號大小
      plt.ylabel(u'y-income',fontsize=14)#設(shè)置y軸,并設(shè)定字號大小

      #color:顏色,linewidth:線寬,linestyle:線條類型,label:圖例,marker:數(shù)據(jù)點的類型
      in1, = plt.plot(data['時間'],data['收入_Jay'],color="deeppink",linewidth=2,linestyle=':', marker='o')
      in2, = plt.plot(data['時間'],data['收入_JJ'],color="darkblue",linewidth=1,linestyle='--', marker='+')
      in3, = plt.plot(data['時間'],data['收入_Jolin'],color="goldenrod",linewidth=1.5,linestyle='-', marker='*')

      plt.legend(handles = [in1,in2,in3],labels=['Jay income','JJ income','Jolon income'],loc=2)#圖例展示位置,數(shù)字代表第幾象限
      plt.show()#顯示圖像
      ```

      屏幕快照 2021-08-31 下午5.48.59

      (4)管理多個子圖

      ```python
      import matplotlib.pyplot as plt
      import numpy as np
      import matplotlib.gridspec as gridspec
      import matplotlib.font_manager as fm #字體管理器

      my_font = fm.FontProperties(fname="/System/Library/Fonts/PingFang.ttc")

      plt.figure()

      x_data = np.linspace(-np.pi,np.pi,64,endpoint=True)
      gs = gridspec.GridSpec(2,3) #將繪圖區(qū)分成兩行三列
      ax1 = plt.subplot(gs[0,:])#指定ax1占用第一行(0)整行
      ax2 = plt.subplot(gs[1,0])#指定ax2占用第二行(1)的第一格(第二個參數(shù)為0)
      ax3 = plt.subplot(gs[1,1:3])#指定ax3占用第二行(1)的第二、三格(第二個參數(shù)為1:3)

      #繪制正弦曲線
      ax1.plot(x_data,np.sin(x_data))
      ax1.spines['right'].set_color('none')
      ax1.spines['top'].set_color('none')
      ax1.spines['bottom'].set_position(('data',0))
      ax1.spines['left'].set_position(('data',0))
      ax1.set_title('正弦曲線',fontproperties=my_font)

      #繪制余弦曲線
      ax2.plot(x_data,np.cos(x_data))
      ax2.spines['right'].set_color('none')
      ax2.spines['top'].set_color('none')
      ax2.spines['bottom'].set_position(('data',0))
      ax2.spines['left'].set_position(('data',0))
      ax2.set_title('余弦曲線',fontproperties=my_font)

      #繪制正切曲線
      ax3.plot(x_data,np.tan(x_data))
      ax3.spines['right'].set_color('none')
      ax3.spines['top'].set_color('none')
      ax3.spines['bottom'].set_position(('data',0))
      ax3.spines['left'].set_position(('data',0))
      ax3.set_title('正切曲線',fontproperties=my_font)
      plt.show()
      ```

      結(jié)果:

      屏幕快照 2021-08-31 下午6.00.00

      tags:
      聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
      10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
      請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
      免費領(lǐng)取
      今日已有369人領(lǐng)取成功
      劉同學(xué) 138****2860 剛剛成功領(lǐng)取
      王同學(xué) 131****2015 剛剛成功領(lǐng)取
      張同學(xué) 133****4652 剛剛成功領(lǐng)取
      李同學(xué) 135****8607 剛剛成功領(lǐng)取
      楊同學(xué) 132****5667 剛剛成功領(lǐng)取
      岳同學(xué) 134****6652 剛剛成功領(lǐng)取
      梁同學(xué) 157****2950 剛剛成功領(lǐng)取
      劉同學(xué) 189****1015 剛剛成功領(lǐng)取
      張同學(xué) 155****4678 剛剛成功領(lǐng)取
      鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
      董同學(xué) 138****2867 剛剛成功領(lǐng)取
      周同學(xué) 136****3602 剛剛成功領(lǐng)取
      相關(guān)推薦HOT
      反欺詐中所用到的機器學(xué)習(xí)模型有哪些?

      一、邏輯回歸模型邏輯回歸是一種常用的分類模型,特別適合處理二分類問題。在反欺詐中,邏輯回歸可以用來預(yù)測一筆交易是否是欺詐。二、決策樹模...詳情>>

      2023-10-14 14:09:29
      軟件開發(fā)管理流程中會出現(xiàn)哪些問題?

      一、需求不清需求不明確是導(dǎo)致項目失敗的主要原因之一。如果需求沒有清晰定義,開發(fā)人員可能會開發(fā)出不符合用戶期望的產(chǎn)品。二、通信不足溝通問...詳情>>

      2023-10-14 13:43:21
      軟件定制開發(fā)中的敏捷開發(fā)是什么?

      軟件定制開發(fā)中的敏捷開發(fā)是什么軟件定制開發(fā)中的敏捷開發(fā),從宏觀上看,是一個高度關(guān)注人員交互,持續(xù)開發(fā)與交付,接受需求變更并適應(yīng)環(huán)境變化...詳情>>

      2023-10-14 13:24:57
      什么是PlatformIo?

      PlatformIO是什么PlatformIO是一個全面的物聯(lián)網(wǎng)開發(fā)平臺,它為眾多硬件平臺和開發(fā)環(huán)境提供了統(tǒng)一的工作流程,有效簡化了開發(fā)過程,并能兼容各種...詳情>>

      2023-10-14 12:55:06
      云快照與自動備份有什么區(qū)別?

      1、定義和目標不同云快照的主要目標是提供一種快速恢復(fù)數(shù)據(jù)的方法,它只記錄在快照時間點后的數(shù)據(jù)變化,而不是所有的數(shù)據(jù)。自動備份的主要目標...詳情>>

      2023-10-14 12:48:59