python利用matplotlib畫圖
阿新 • • 發佈:2018-12-29
matplotlib簡介
matplotlib 是python最著名的繪相簿,它提供了一整套和matlab相似的命令API,十分適合互動式地進行製圖。而且也可以方便地將它作為繪圖控制元件,嵌入GUI應用程式中。它的文件相當完備,並且Gallery(https://matplotlib.org/gallery.html)頁面 中有上百幅縮圖,開啟之後都有源程式。因此如果你需要繪製某種型別的圖,只需要在這個頁面中瀏覽/複製/貼上一下,基本上都能搞定。
例子如下:畫出nba火箭隊和勇士隊近10年的戰績直線圖和柱狀圖,程式碼如下
'''import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt np.random.seed(2000) y = np.random.standard_normal((10, 2)) plt.figure(figsize=(7,5)) plt.plot(y, lw = 1.5) plt.plot(y, 'ro') plt.grid(True) plt.axis('tight') plt.xlabel('index') plt.ylabel('value') plt.title('A simple plot') plt.show() ''' import matplotlib as mpl import matplotlib.pyplot as plt from matplotlib.ticker import MaxNLocator # 匯入自動查詢到最佳的最大刻度函式 import numpy as np x = [2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018] y1 = [53, 42, 43, 34, 45, 54, 56, 41, 55, 65] # 火箭09-18勝場 y3 = [29, 40, 39, 32, 37, 28, 26, 41, 27, 17] # 負場 y2 = [29, 26, 36, 23, 47, 51, 67, 73, 67, 58] #勇士09-18勝場 y4 = [53, 56, 46, 43, 35, 31, 15, 9, 15, 24] # 負場 def DrawLine(): #plt.figure() #建立影象物件 # 1、直線圖 # Get Current Axes 獲取當前軸物件 ax = plt.figure().gca() # 設定x軸,y軸最大刻度為整數 ax.xaxis.set_major_locator(MaxNLocator(integer=True)) ax.yaxis.set_major_locator(MaxNLocator(integer=True)) # 繪圖 plt.subplot(211) # 兩行一列 第一幅直線圖 p1, = plt.plot(x, y1, 'ro-', label='rocket') # r表示red,o表示使用圓形標記繪製,-表示實現線, # 圖形上的點畫註解 for xy in zip(x, y1): plt.annotate("(%s)" % xy[1], xy=xy, xytext=(-20, 10), textcoords='offset points') #(%s,%s)" % xy,註解中顯示格式(x,y) p2, = plt.plot(x, y2, 'bo--', label='warrior') # b表示藍色,--表示虛線 for xy in zip(x, y2): plt.annotate("(%s)" % xy[1], xy=xy, xytext=(-20, 10), textcoords='offset points') # 新增圖例 plt.legend(loc='upper right') # 也可plt.legend([p1, p2], ['rocket', 'warrior'], loc='upper left') # 新增x,y軸標籤名 plt.xlabel('year') plt.ylabel('win') # 新增圖示題 plt.title('history grade') plt.grid(True) # 新增網格 # 2、柱狀圖 n_groups = 10 index = np.arange(n_groups) bar_width = 0.35 opacity = 0.4 plt.subplot(212) # 兩行一列 第二幅柱狀圖 p1 = plt.bar(index, y1, bar_width, alpha=opacity, color='r', label='rocket') p2 = plt.bar(index + bar_width, y2, bar_width, alpha=opacity, color='b', label='warrior') plt.legend() plt.xticks(index + bar_width/2, tuple(x)) # x軸顯示年限 plt.xlabel('year') plt.ylabel('win') plt.title('history grade') plt.tight_layout() # 會自動調整子圖引數,使之填充整個影象區域 plt.show()
圖形為:
參考連結:
https://blog.csdn.net/pipisorry/article/details/37742423
https://www.cnblogs.com/Ms-Green/p/6203850.html
https://matplotlib.org/gallery.html
調整座標整數刻度
https://codeday.me/bug/20180824/225470.html
matplotlib繪圖視覺化知識
https://blog.csdn.net/panda1234lee/article/details/52311593
https://www.cnblogs.com/chaoren399/p/5792168.html
圖例分開顯示
http://blog.sina.com.cn/s/blog_a7ace3d80102wbgl.html
柱狀圖
https://blog.csdn.net/code_segment/article/details/79209947