python画图程序没有图_python画图 - v0
學了這么多年python了,還一直沒有系統地了解過python的畫圖功能。
每次都是現學現用,但是某些比較緊急的場合,往往就會比較耗時又耗力,因為不成體系,還經常會忘記已經吸納的新知識。
所以,我決定把這塊的畫圖功能系統的學習一下,進行知識儲備。
Python的pyplot模塊繪制圖表的基本操作。
=======================================================
一個簡單的二維折線圖:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1.2, 2.5, 4.5, 7.3]
# plot函數作圖
plt.plot(x, y)
plt.savefig("test.png", dpi=120)
# show函數展示出這個圖,如果沒有這行代碼,則程序完成繪圖,但看不到
plt.show()
運行后的效果是這樣的,從數值對應上,橫軸應該是x軸,縱軸應該是y軸。
但是,對應圖與代碼,另外疑問的是,為什么x軸給出的是整數,在繪制時卻用了浮點?而又為什么y軸給出的是浮點數,在繪制時卻用的是整數呢?
----------------------------------------------------------------------------------------------
另一個點是:
show()函數在通常的運行情況下,將會阻塞程序的運行,直到用戶關閉繪圖窗口。換句話說,在關閉show()函數彈出的圖像窗口前,show()函數后面的代碼不會運行,直到用戶關閉圖像窗口,才會繼續。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
我測試了普通的print()之后,發現并沒有阻塞。。。
但是呢,當我在調用plt.savefig()將當前的Figure對象保存成圖像文件時,
如果plt.savefig()代碼放在了plt.show()之后,那我本地保存的圖像就是一張空白圖,不符合預期;
但如果plt.savefig()代碼放在了plt.show()之前,則可以成功實現保存。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
雖然問題不大,但也讓我產生疑問:到底是有阻塞還是沒有阻塞呢?如果有,阻塞什么,而又不阻塞什么呢?
=======================================================
不同風格的線條:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1.2, 2.5, 4.5, 7.3]
#線條顏色、線條樣式、突出(marker)每個記錄的點、線條粗細
plt.plot(x, y, color="r", linestyle="--", marker="*", linewidth=1.0)
plt.show()
運行后的效果:
---------------------------------------------------------------------------------------------
線條風格(linstyle):
supported values are '-', '--', '-.', ':', 'None', ' ', '', 'solid', 'dashed', 'dashdot', 'dotted'
-----------------------------------------------------------------------------------------------
線條顏色(color):
-----------------------------------------------------------------------------------------------
線條標記(marker):
======================================================
坐標軸控制
-繪圖范圍:
import matplotlib.pyplot as plt
import numpy as np
#x 的取值范圍
x = np.arange(-5, 5, 0.02)
y = np.sin(x)
#控制圖像的繪圖范圍
#plt.axis([x_min, x_max, y_min, y_max])
plt.axis([-np.pi, np.pi, -2, 2])
plt.plot(x, y, color="r", linestyle="-", linewidth=1)
plt.show()
運行效果如下:
值得注意的一個點:
雖然x的取值范圍在[?5,5],但是繪圖時,只是展示了[?π,π]之間的函數圖。
引出一個可以控制圖像范圍的函數:
plt.axis([x_min, x_max, y_min, y_max])
如果只是單獨想要控制x軸或者y軸的取值,則可以用plt.xlim(x_min, x_max)和plt.ylim(y_min, y_max),用法與plt.axis()類似。
----------------------------------------------------------------------------------------------
-標題和間隔:
import matplotlib.pyplot as plt
import numpy as np
import math
x = np.arange(-2 * math.pi, 2 * math.pi, 0.02)
y = np.sin(x)
plt.axis([-10, 10, -2, 2])
plt.xticks([i * np.pi/2 for i in range(-4, 5)], [str(i * 0.5) + "$\pi$" for i in range(-4, 5)])
plt.yticks([i * 0.5 for i in range(-4, 5)])
plt.xlabel("x")
plt.ylabel("y")
plt.plot(x, y, color="r", linestyle="-", linewidth=1)
plt.show()
運行效果如下:
純粹知識的學習記錄:
函數plt.xlabel()和plt.xlabel()用來實現對x軸和y軸添加標題。
函數plt.xticks()和plt.yticks()用來實現對x軸和y軸坐標間隔(也就是軸記號)的設定。用法上,函數的輸入是兩個列表,第一個表示取值,第二個表示標記。當然如果你的標記就是取值本身,則第二個列表可以忽略。(支持latex公式表達)
=======================================================
PS:感謝參考文章的作者,從細節、小處一步步向前推進,能夠很好的幫助我建立知識體系。
不過,一如既往地,我的問題真多,雖然問題不大,但是擁有自己的思考分析,我認為是應該一直堅持的事情。
畢竟自己小菜雞,一直在參考文章進行學習,期待學習后期可以有自己完全獨立、不依賴參考文章的成形文字。
總結
以上是生活随笔為你收集整理的python画图程序没有图_python画图 - v0的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python赋值语句格式_Python赋
- 下一篇: tftp 服务器 ip_360Stack