SSH遠(yuǎn)程連接Linux服務(wù)器,無GUI使用matplotlib繪圖

問題描述:通過遠(yuǎn)程訪問服務(wù)器的方式運(yùn)行=代碼,但是代碼有用到matplotlib,使用matplotlib無法在終端上顯示繪制好的圖形,結(jié)果代碼報(bào)錯(cuò)。

一.警告信息

報(bào)錯(cuò)結(jié)果

兩種解決方法:

1、python文件中:

在 from matplotlib import pylot 之前,添加代碼:

如下:

import matplotlib as mpl

mpl.use('Agg')

from matplotlib import pylot

2、在配置文件中:

Linux中,創(chuàng)建文件 ~/.config/matplotlib/matplotlibrc,

(其中,~/.config/matplotlib/是配置文件matplotlibrc的路徑)

添加如下一行:

backend : Agg

二、生成圖片

支持的格式(注意不支持jpg格式):

eps, pdf, pgf, png, ps, raw, rgba, svg, svgz

在plt.draw() 或者 plt.show() 之后添加生成圖片的代碼:

plt.show()

plt.savefig('/home/moxiao/code/python/classification_pr.png')

三、在GUI里打開代碼生成的圖片即可

四、完整示例

picture.py代碼:

# -*- coding: utf-8 -*-

import numpy as np

import matplotlib.pyplot as plt

plt.figure(1) # 創(chuàng)建圖表1

plt.figure(2) # 創(chuàng)建圖表2

ax1 = plt.subplot(211) # 在圖表2中創(chuàng)建子圖1

ax2 = plt.subplot(212) # 在圖表2中創(chuàng)建子圖2

x = np.linspace(0, 3, 100)

for i in range(5):

? ? plt.figure(1)? # 選擇圖表1

? ? plt.plot(x, np.exp(i*x/3))

? ? plt.sca(ax1)? # 選擇圖表2的子圖1

? ? plt.plot(x, np.sin(i*x))

? ? plt.sca(ax2)? # 選擇圖表2的子圖2

? ? plt.plot(x, np.cos(i*x))

plt.show()

plt.savefig('table.png')

運(yùn)行結(jié)果: 在本地生成 table.png, 在GUI中打開圖片:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容