導航:首頁 > 編程語言 > python繪圖圖例

python繪圖圖例

發布時間:2022-09-11 00:04:51

A. python matlibplot 怎樣畫圖例

用於添加圖例的函數是plt.legend(),我們通過例子來對其進行介紹。

%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

#多數據並列柱狀圖
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False
x = np.arange(6)
y1 = [23,5,14,27,18,14]
y2 = [10,27,25,18,23,16]
tick_label = ["A","B","C","D","E","F"]
bar_width = 0.35
plt.bar(x,y1,bar_width,align="center",label="班級A",alpha=0.5)
plt.bar(x+bar_width,y2,bar_width,align="center",label="班級B",alpha=0.5)
plt.xlabel("成績等級")
plt.ylabel("人數")
plt.xticks(x+bar_width/2,tick_label)

plt.legend(bbox_to_anchor=(1,1),#圖例邊界框起始位置
loc="upper right",#圖例的位置
ncol=1,#列數
mode="None",#當值設置為「expend」時,圖例會水平擴展至整個坐標軸區域
borderaxespad=0,#坐標軸和圖例邊界之間的間距
title="班級",#圖例標題
shadow=False,#是否為線框添加陰影
fancybox=True)#線框圓角處理參數
plt.show()

效果如圖所示

B. python中圖例的位置怎麼手動調整

1.最近遇到一個問題,關於圖例legend如何畫在圖外的問題,並以適合的比例顯示出來。

2.首先傳統的做法如下,這種方式並不能滿足我的要求,而且是顯示在圖內。

ax1.legend(loc='center left', bbox_to_anchor=(0.2, 1.12),ncol=3)1

loc表示圖例的位置,有多種形式:

『North』 圖例標識放在圖頂端
『South』 圖例標識放在圖底端
『East』 圖例標識放在圖右方
『West』 圖例標識放在圖左方
『NorthEast』 圖例標識放在圖右上方(默認)
『NorthWest 圖例標識放在圖左上方
『SouthEast』 圖例標識放在圖右下角
『SouthWest』 圖例標識放在圖左下角12345678

有人說簡單,有相同的方式,如下經測試不行,可能是本人用的python版本不行,所用的方式就是和前面一樣,採用如下的方式來替換上面的legend位置。

『NorthOutside』 圖例標識放在圖框外側上方
『SouthOutside』 圖例標識放在圖框外側下方
『EastOutside』 圖例標識放在圖框外側右方
『WestOutside』 圖例標識放在圖框外側左方
『NorthEastOutside』 圖例標識放在圖框外側右上方
『NorthWestOutside』 圖例標識放在圖框外側左上方
『SouthEastOutside』 圖例標識放在圖框外側右下方
『SouthWestOutside』 圖例標識放在圖框外側左下方
(以上幾個將圖例標識放在框圖外)
『Best』 圖標標識放在圖框內不與圖沖突的最佳位置
『BestOutside』 圖標標識放在圖框外使用最小空間的最佳位置1234567891011

bbox_to_anchor:表示legend的位置,前一個表示左右,後一個表示上下。當使用這個參數時。loc將不再起正常的作用,ncol=3表示圖例三列顯示。

3.有人說要解決這個問題可以採用對坐標軸放大或是縮小的方式,經本人測試可以行,但是,放大縮小的比率不讓人滿意,且很難控制到適合的位置。有興趣可以參考鏈接,最終得出此方法不行。

4.那麼就沒有辦法了嗎?NO.NO,請看下面,最終完成如下。

這就是本人要的效果,不廢話,具體做法如下

box = ax1.get_position()
ax1.set_position([box.x0, box.y0, box.width , box.height* 0.8])12

首先按上面的方式,如果你想將圖例放上面就box.height*0.8,放右邊就box.width*0.8其它方式一樣。同時配合下面來使用。

ax1.legend(loc='center left', bbox_to_anchor=(0.2, 1.12),ncol=3)1

主要是bbox_to_anchor的使用,自己可以修改參數試下,good luck for you.

閱讀全文

版權聲明:原創文章,未經博主

C. Python如何畫盒子圖與其它圖形同軸

mport pandas as pd #導入pandas
import matplotlib.pyplot as plt
import numpy as np
from scipy import interpolate
#fig,axes = plt.subplots(1,2,figsize=(8,4))
fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2,sharex=True, figsize=(6, 3))
n_wrms_before_filtering=[]
e_wrms_before_filtering=[]
u_wrms_before_filtering=[]
n_wrms_after_filtering=[]
e_wrms_after_filtering=[]
u_wrms_after_filtering=[]
lines = open("D:\軟體安裝\SoftwareFile\Pycharm\PycharmProjects\\boxplot\data\wrms_neu1.dat", 'r').readlines()
for i in range(len(lines)):
# split data
fields = lines[i].split(' ')
n_wrms_before_filtering.append(float(fields[0]))
e_wrms_before_filtering.append(float(fields[1]))
u_wrms_before_filtering.append(float(fields[2]))
lines = open("D:\軟體安裝\SoftwareFile\Pycharm\PycharmProjects\\boxplot\data\wrms_neu2.dat", 'r').readlines()
for i in range(len(lines)):
# split data
fields = lines[i].split(' ')
n_wrms_after_filtering.append(float(fields[0]))
e_wrms_after_filtering.append(float(fields[1]))
u_wrms_after_filtering.append(float(fields[2]))
labels = 'N','E','U' #圖例
p1=ax1.boxplot([n_wrms_before_filtering, e_wrms_before_filtering, u_wrms_before_filtering],widths = 0.8,labels = labels,patch_artist = True)
color = ['#515151', '#f14040', '#1a6fdf'] # 有多少box就對應設置多少顏色
for box, c in zip(p1['boxes'], color):
# 箱體邊框顏色
box.set(color=c, linewidth=1.5)
# 箱體內部填充顏色
box.set(facecolor=c)
# 這里設置的是各個box的其他屬性
for whisker in p1['whiskers']:
whisker.set(color='#180405', linewidth=1.5)
for cap in p1['caps']:
cap.set(color='#180405', linewidth=1.5)
for median in p1['medians']:
median.set(color='#180405', linewidth=1.5)
for flier in p1['fliers']:
flier.set(marker='o', color='y', alpha=0.5)
labels = 'N','E','U' #圖例
p2=ax2.boxplot([n_wrms_after_filtering, e_wrms_after_filtering, u_wrms_after_filtering],widths = 0.8,labels = labels,patch_artist = True)
color = ['#515151', '#f14040', '#1a6fdf'] # 有多少box就對應設置多少顏色
for box, c in zip(p2['boxes'], color):
# 箱體邊框顏色
box.set(color=c, linewidth=1.5)
# 箱體內部填充顏色
box.set(facecolor=c)
# 這里設置的是各個box的其他屬性
for whisker in p2['whiskers']:
whisker.set(color='#180405', linewidth=1.5)
for cap in p2['caps']:
cap.set(color='#180405', linewidth=1.5)
for median in p2['medians']:
median.set(color='#180405', linewidth=1.5)
for flier in p2['fliers']:
flier.set(marker='o', color='y', alpha=0.5)
ax1.set(xlabel='Directions', ylabel='WRMS/mm')
ax2.set(xlabel='Directions', ylabel='WRMS/mm')
ax1.set_title('Before filtering')
ax2.set_title('After filtering')
plt.tight_layout()
#plt.subplots_adjust(left=0.129, bottom=0.11, right=0.9, top=0.88,wspace=0.2, hspace=0.2)
#plt.show()
plt.savefig('D:\軟體安裝\SoftwareFile\Pycharm\PycharmProjects\\boxplot\\123', dpi=600)

D. 在python中採用plt.text形式描點繪圖時,怎麼通過legend添加圖例

'best': 0, # only implemented for axes legends
'upper right': 1,
'upper left': 2,
'lower left': 3,
'lower right': 4,
'right': 5,
'center left': 6,
'center right': 7,
'lower center': 8,
'upper center': 9,
'center': 10,

E. Python 如何畫類似輻射圖

Python有一些自帶的圖形例子,在Python目錄的Lib\turtledemo下面,通過下面的命令可以執行,forest和tree有點類似你想要的圖形,可以參考一下。
pythonw -m turtledemo forest

F. python畫正餘弦函數圖像

用python怎樣畫出如題所示的正餘弦函數圖像? 如此編寫代碼,使其中兩個軸、圖例、刻度,大小,LaTex公式等要素與原圖一致,需要用到的代碼如下,沒有縮進:


#-*-codeing:utf-8;-*-

from matplotlib import pyplot as plt

import numpy as np

a=np.linspace(0,360,980)

b=np.sin(a/180*np.pi)

c=np.cos(a/180*np.pi)

fig = plt.figure()

ax = fig.add_subplot(111)

ax.set_xlim([0, 360])

ax.plot(a,b,label=r"$y=sin( heta)$")

ax.plot(a,c,label=r"$y=cos( heta)$")

ax.grid(True)

ax.set_ylabel(r"$y$")

ax.set_xlabel(r"$ heta$")

plt.xticks(np.arange(0,360+1,45))

plt.title("Sine & Cosine Waves")

plt.legend()

plt.savefig("SinCosWaveDegFont.jpg")

plt.show()


代碼輸出的文件的圖

G. 新手python怎麼從Excel中讀取多行多列畫並列柱狀圖

讀取表格那麼多列的數據可以使用csv

樓下已經給你用pandas的教程了,你只需要通過SCV把數據讀取出來往data=pd.read_excel()裡面放應該就可以了。

給你一篇文章按照上面去看看吧

CSV

H. python 三維圖如何製作圖例

你如果使用的是matplotlib的話可以直接調用plot3這類專門構建3d的圖

I. python畫折線圖

#encoding=utf-8
importmatplotlib.pyplotasplt
frompylabimport*#支持中文
mpl.rcParams['font.sans-serif']=['SimHei']

names=['5','10','15','20','25']
x=range(len(names))
y=[0.855,0.84,0.835,0.815,0.81]
y1=[0.86,0.85,0.853,0.849,0.83]
#plt.plot(x,y,'ro-')
#plt.plot(x,y1,'bo-')
#pl.xlim(-1,11)#限定橫軸的范圍
#pl.ylim(-1,110)#限定縱軸的范圍
plt.plot(x,y,marker='o',mec='r',mfc='w',label=u'y=x^2曲線圖')
plt.plot(x,y1,marker='*',ms=10,label=u'y=x^3曲線圖')
plt.legend()#讓圖例生效
plt.xticks(x,names,rotation=45)
plt.margins(0)
plt.subplots_adjust(bottom=0.15)
plt.xlabel(u"time(s)鄰居")#X軸標簽
plt.ylabel("RMSE")#Y軸標簽
plt.title("Asimpleplot")#標題

plt.show()

J. python matplotlib 圖像可視化

Python畫圖之總結待整理

https://morvanzhou.github.io/tutorials/data-manipulation/plt/
http://blog.sciencenet.cn/blog-1408284-850983.html
http://www.cnblogs.com/DHUtoBUAA/p/6619099.html
http://blog.csdn.net/wuguangbin1230/article/details/72858612
http://blog.sciencenet.cn/blog-251664-800766.html
http://blog.csdn.net/wuguangbin1230/article/details/72858612
http://www.jianshu.com/p/0a81b57bbb8c
https://pythonprogramming.net/

http://blog.csdn.net/haoji007/article/details/52063168

Python Data Visualizations

Seaborn 庫: https://seaborn.pydata.org/

Python Seaborn 教程: http://elitedatascience.com/python-seaborn-tutorial

matplotlib: plotting with Python
matplotlib: plotting with Python-github

python-data-visualization-course
Interactive Web Plotting for Python
Interactive Web Plotting for Python-github

https://morvanzhou.github.io/tutorials/data-manipulation/plt/3-3-contours/
https://github.com/MorvanZhou/tutorials/tree/master/matplotlibTUT

https://github.com/jiandanjinxin/tf-dev-summit-tensorboard-tutorial
https://github.com/jiandanjinxin/tensorflow-mnist-tutorial

CSDN-markdown編輯器語法——字體、字型大小與顏色

%matplotlib inline
%matplotlib notebook

Need to use either

or

Only one in each notebook! using inline will just sent png images to browser, using notebook will provide interactivity and allow updating old figures. With notebook you need to make sure to create a new figure before plotting, otherwise the last one will be updated!

還有簡便的 plt.close('all') 關閉所有圖,不用管 fig 號碼

Some plots from these tutorials:

調整名字和間隔

設置不同名字和位置

調整坐標軸

參數loc='upper right'
表示圖例將添加在圖中的右上角.

調整位置和名稱

最後我們得到帶有圖例信息的圖片.

移動坐標

然後我們挪動坐標軸的位置.

然後標注出點(x0, y0)的位置信息. 用plt.plot([x0, x0,], [0, y0,], 'k--', linewidth=2.5)
畫出一條垂直於x軸的虛線.

添加註釋 annotate
接下來我們就對(x0, y0)這個點進行標注.

其中參數xycoords='data'
是說基於數據的值來選位置,xytext=(+30, -30)
和textcoords='offset points'
對於標注位置的描述 和 xy 偏差值,arrowprops
是對圖中箭頭類型的一些設置.

添加註釋 text

其中-3.7, 3,
是選取text的位置, 空格需要用到轉字元
,fontdict
設置文本字體.

生成圖形
當圖片中的內容較多,相互遮蓋時,我們可以通過設置相關內容的透明度來使圖片更易於觀察,也即是通過本節中的bbox
參數設置來調節圖像信息.
首先參考之前的例子, 我們先繪制圖像基本信息:

調整坐標

然後對被遮擋的圖像調節相關透明度,本例中設置 x軸 和 y軸 的刻度數字進行透明度設置

其中label.set_fontsize(12)重新調節字體大小,bbox設置目的內容的透明度相關參,facecolor調節 box 前景色,edgecolor 設置邊框, 本處設置邊框為無,alpha設置透明度. 最終結果如下:

散點圖
首先,先引入matplotlib.pyplot簡寫作plt,再引入模塊numpy用來產生一些隨機數據。生成1024個呈標准正態分布的二維數據組 (平均數是0,方差為1) 作為一個數據集,並圖像化這個數據集。每一個點的顏色值用T來表示:

數據集生成完畢,現在來用scatterplot這個點集,滑鼠點上去,可以看到這個函數的各個parameter的描述,如下圖:
輸入X和Y作為location,size=75,顏色為T,color map用默認值,透明度alpha 為 50%。 x軸顯示範圍定位(-1.5,1.5),並用xtick()函數來隱藏x坐標軸,y軸同理:

今天的柱狀圖分成上下兩部分,每一個柱體上都有相應的數值標注,並且取消坐標軸的顯示。
生成基本圖形
向上向下分別生成12個數據,X為 0 到 11 的整數 ,Y是相應的均勻分布的隨機數據。使用的函數是plt.bar
,參數為X和Y:

這樣我們就生成了下圖所示的柱狀圖基本框架:

現在的結果呈現:

接下來我們用函數plt.text分別在柱體上方(下方)加上數值,用%.2f保留兩位小數,橫向居中對齊ha='center',縱向底部(頂部)對齊va='bottom':

最終的結果就像開始一樣:

畫等高線
數據集即三維點 (x,y) 和對應的高度值,共有256個點。高度值使用一個 height function f(x,y) 生成。 x, y 分別是在區間 [-3,3] 中均勻分布的256個值,並用meshgrid在二維平面中將每一個x和每一個y分別對應起來,編織成柵格:

接下來進行顏色填充。使用函數plt.contourf把顏色加進去,fill, 位置參數分別為:X, Y, f(X,Y)。透明度0.75,並將 f(X,Y) 的值對應到color map的暖色組中尋找對應顏色。8代表等高線的個數。

接下來進行等高線繪制。使用plt.contour函數劃線。位置參數為:X, Y, f(X,Y)。顏色選黑色,線條寬度選0.5。現在的結果如下圖所示,只有顏色和線條,還沒有數值Label:

添加高度數字
其中,8代表等高線的密集程度,這里被分為10個部分。如果是0,則圖像被一分為二。
最後加入Label,inline控制是否將Label畫在線裡面,字體大小為10。並將坐標軸隱藏:

隨機矩陣畫圖

這一節我們講解怎樣在matplotlib中列印出圖像。這里我們列印出的是純粹的數字,而非自然圖像。 我們今天用這樣 3x3 的 2D-array 來表示點的顏色,每一個點就是一個pixel。

colorbar
下面我們添加一個colorbar ,其中我們添加一個shrink參數,使colorbar的長度變短為原來的92%:

3D
首先在進行 3D Plot 時除了導入 matplotlib ,還要額外添加一個模塊,即 Axes 3D 3D 坐標軸顯示:

之後要先定義一個圖像窗口,在窗口上添加3D坐標軸,顯示成下圖:

接下來給進 X 和 Y 值,並將 X 和 Y 編織成柵格。每一個(X, Y)點對應的高度值我們用下面這個函數來計算。

其中,rstride 和 cstride 分別代表 row 和 column 的跨度。
下面兩個圖分別是跨度為1 和 5 的效果:

投影

下面添加 XY 平面的等高線:

如果 zdir 選擇了x,那麼效果將會是對於 XZ 平面的投影,效果如下

閱讀全文

與python繪圖圖例相關的資料

熱點內容
編譯器原理與實現書 瀏覽:708
dos選擇命令 瀏覽:16
apm固件編譯到單片機 瀏覽:120
聯通深藍卡都包含什麼app 瀏覽:263
如何判斷網路伺服器正常 瀏覽:649
路由器搭橋遠端伺服器地址是什麼 瀏覽:515
編譯動態庫時會連接依賴庫嗎 瀏覽:707
淘寶手機加密是隨機的嗎 瀏覽:672
解壓包子怎麼裝飾 瀏覽:585
四個數湊24演算法 瀏覽:676
哪一種不是vi編譯器的模式 瀏覽:169
xp在此處打開命令窗口 瀏覽:128
代碼編譯運行用什麼軟體 瀏覽:999
動態庫在程序編譯時會被連接到 瀏覽:761
python超簡單編程 瀏覽:260
獲取命令方 瀏覽:977
怎樣製作文件夾和圖片 瀏覽:60
調研編譯寫信息 瀏覽:861
python馮諾依曼 瀏覽:419
同時安裝多個app有什麼影響 瀏覽:254