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