我有一些顏色情節,我需要保存在灰度。有沒有簡單的方法來做到這一點,而不改變繪圖格式?保存matplotlib陰謀灰度
回答
其實這是之前詢問過的。這是一個相當不錯的答案,這對谷歌自帶2日(今天的):
Display image as grayscale using matplotlib
而且該解決方案非常相似,蘇基的...
哦,我無聊,所以我張貼在這裏也是一個完全成熟的代碼:
import numpy as np
import pylab as p
xv=np.ones(4)*.5
yv=np.arange(0,4,1)
xv1=np.ones(4)*-.5
yv1=np.arange(0,4,1)
#red vertical line on the right
yv2=np.arange(0,1.5,0.1)
xv2=np.ones_like(yv2)*.7
#red vertical line on the left
yv3=np.arange(0,2,0.01)
xv3=np.ones_like(yv3)*-0.7
###
xc=np.arange(-1.4,2,0.05)
yc=np.ones_like(xc)*1
fig = p.figure()
ax1 = fig.add_subplot(111)
#adjustprops = dict(left=0.12, bottom=0.2, right=0.965, top=0.96, wspace=0.13, hspace=0.37)
#fig.subplots_adjust(**adjustprops)
ax1.plot(xv,yv, color='blue', lw=1, linestyle='dashed')
ax1.plot(xv1,yv1, 'green', linestyle='dashed')
ax1.plot(np.r_[-1:1:0.2],np.r_[-1:1:0.2],'red')
ax1.plot(xc,yc, 'k.', markersize=3)
p.savefig('colored_image.png')
import matplotlib.image as mpimg
import matplotlib.cm as cm
import Image
figprops = dict(figsize=(10,10), dpi=100)
fig1 = p.figure(**figprops)
#fig1 = p.figure()
#ax1 = fig.add_subplot(111)
adjustprops = dict()
image=Image.open('colored_image.png').convert("L")
arr=np.asarray(image)
p.figimage(arr,cmap=cm.Greys_r)
p.savefig('grayed.png')
p.savefig('grayed.pdf',papertype='a4',orientation='portrait')
這將產生顏色的曲線,比讀它,將其轉換爲灰度,並保存爲PNG和PDF格式。
這個答案不是很好,因爲它需要柵格化繪圖和任何字體。光柵化轉換爲.png時發生。最好將pdf寫入文件系統,然後將其轉換爲灰度,也許使用ghostscript。 「導入圖像」 – 2015-04-25 05:10:56
不再有效。而是使用「從PIL導入圖像」 – warunapww 2017-09-08 21:28:27
目前很難直接從matplotlib做到,但是在「將來」他們打算支持set_gray(True)
對該圖的調用(請參閱郵件列表線程here)。
你最好的選擇將是其保存在顏色,並將其轉換,無論是在與PIL蟒蛇:
import Image
Image.open('color.png').convert('L').save('bw.png')
或者在命令行中使用ImageMagick的:
convert -type Grayscale color.png bw.png
像其他答案一樣,這個答案不是很令人滿意,因爲它柵格化的情節。 – 2015-04-25 05:11:58
,並增加Mu Mind的解決方案
如果因爲某種原因想要避免將它寫入文件中,可以使用StringIO類似於文件:
import Image
import pylab
from StringIO import StringIO
pylab.plot(range(10),[x**2 for x in range(10)])
IO = StringIO()
pylab.savefig(IO,format='png')
IO.seek(0)
#this, I stole from Mu Mind solution
Image.open(IO).convert('L').show()
像其他答案一樣,這個答案不太令人滿意,因爲它柵格化了情節。 – 2015-04-25 05:12:20
我也在爲這個問題苦苦掙扎。據我所知,matplotlib不支持直接轉換爲灰度,但您可以保存一個顏色pdf,然後用ghostscript將其轉換爲灰度:
gs -sOutputFile = gray.pdf -sDEVICE = pdfwrite -sColorConversionStrategy = Gray -dProcessColorModel =/DeviceGray -dNOPAUSE -dBATCH -dAutoRotatePages =/None color.pdf
爲什麼不只是使用灰度樣式表? http://matplotlib.org/examples/style_sheets/plot_grayscale.html – 2015-04-25 05:16:01
這實際上並沒有將彩色圖轉換爲灰度。它只是使一些元素灰色默認。我繪製了我想要導出爲網頁的兩種顏色並轉換爲灰色進行打印的情況。 – 2015-04-25 05:48:20
您可以使用上下文管理器中的樣式表。用這些函數將你的調用封裝到非數據處理繪圖功能中。 – 2015-04-25 05:58:08
- 1. 如何保存灰度matplotlib陰謀numpy的陣列
- 2. 更新matplotlib陰謀
- 3. 現場matplotlib陰謀
- 4. 忽略對matplotlib陰謀
- 5. 蟒蛇matplotlib陰謀表
- 6. Matplotlib陰謀結果空白
- 7. matplotlib陰謀csv文件
- 8. 用matplotlib燭臺陰謀
- 9. 將Matplotlib陰謀圖像保存到Django模型
- 10. 在matplotlib中激活幹區陰謀
- 11. matplotlib兩個傳說出來的陰謀
- 12. matplotlib 3d改變標籤的陰謀
- 13. Python的matplotlib插入索引的陰謀
- 14. matplotlib中的實時陰謀 - python
- 15. pyqtgraph設施pcolor陰謀llike matplotlib
- 16. 在Matplotlib中繪製字形的陰謀
- 17. xticks值數據框列值matplotlib陰謀
- 18. Python matplotlib/pylab - 一個3D地毯陰謀
- 19. 用matplotlib Python極性時鐘式陰謀
- 20. matplotlib錯誤。不要顯示陰謀
- 21. 的Python如何爲matplotlib陰謀
- 22. 註釋不會出現在matplotlib陰謀
- 23. Matplotlib陰謀窗口是黑色
- 24. Matplotlib funcAnimation不打開/顯示陰謀
- 25. numpy數組陰謀矩陣matplotlib
- 26. 從tcp數據與Matplotlib陰謀
- 27. matplotlib吧陰謀填充黑色紋理
- 28. 從matplotlib的陰謀獲取數據
- 29. 保存陰謀在八度/ MatLab的矩陣
- 30. 刪除註釋,同時保持陰謀matplotlib
圍繞這個問題進行了一些討論,請參閱[將顏色轉換爲BW /灰度](http://old.nabble.com /convert-figure-from-color-to-BW-grayscale-td29756144.html)。不知道在最新版本的matplotlib中'set_gray'屬性是否可用。 – chl 2011-05-16 18:29:43
之後你可以使用imagemagick:'convert -type Grayscale old.png new.png'我認爲已經有一些關於SO cf的東西[link](http://stackoverflow.com/questions/3823752/display-image-as-灰度使用matplotlib) – 2011-05-17 20:53:27