matplotlib之散點圖

環境:windows系統,anaconda3 64位,python 3.6python

1.初認識

基本代碼以下:segmentfault

import numpy as np
import matplotlib.pyplot as plt
N = 1000
x = np.random.randn(N)
y = np.random.randn(N)
plt.scatter(x, y)
plt.show()

這裏使用numpy包的random函數隨機生成1000組數據,而後經過scatter函數繪製了散點圖。windows

隨機散點圖

這篇文章的重點其實在於scatter函數。
scatter數組

  • x,y 形如shape(n,)的數組,可選值,
  • s 點的大小(也就是面積)默認20
  • c 點的顏色或顏色序列,默認藍色。其它如c = 'r' (red); c = 'g' (green); c = 'k' (black) ; c = 'y'(yellow)
  • marker 形狀,可選值,默認是圓
    基本
    若是須要其餘的,可搜索matplotlib的官網,在官網中搜索markers,選擇第一個結果。
import numpy as np
import matplotlib.pyplot as plt
N = 1000
x = np.random.randn(N)
y = np.random.randn(N)
color = ['r','y','k','g','m']
plt.scatter(x, y,c=color,marker='>')
plt.show()

示例

  • alpha:標量,可選,默認值:無, 0(透明)和1(不透明)之間的alpha混合值
import numpy as np
import matplotlib.pyplot as plt
N = 1000
x = np.random.randn(N)
y = np.random.randn(N)
plt.scatter(x, y,alpha=0.5)
plt.show()

示例alpha = 0.5

  • edgecolors,顧名思義,邊緣顏色或顏色序列,可選值,默認值:None
import numpy as np
import matplotlib.pyplot as plt
N = 1000
x = np.random.randn(N)
y = np.random.randn(N)
plt.scatter(x, y,alpha=0.5,edgecolors= 'white') #edgecolors = 'w',亦可
plt.show()

與上圖對比

2.圖例沒法顯示中文

import numpy as np
import matplotlib.pyplot as plt
N = 1000
x = np.random.randn(N)
y = np.random.randn(N)
plt.scatter(x, y,alpha=0.5,edgecolors= 'white')
plt.title('示例')#顯示圖表標題
plt.xlabel('x軸')#x軸名稱
plt.ylabel('y軸')#y軸名稱
plt.grid(True)#顯示網格線
plt.show()

中文沒法顯示

查找緣由,發現時由於matplotlib庫沒有中文字體。dom

解決方案1

每次編代碼時都進行參數設置以下:函數

#coding:utf-8
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標籤
plt.rcParams['axes.unicode_minus']=False #用來正常顯示負號
#有中文出現的狀況,須要u'內容'

解決方案2

一勞永逸
知乎字體

說實話,我折騰了半天沒有成功,只有臨時方法成功了。
等下次在嘗試。3d

待續code

相關文章
相關標籤/搜索