(2)设置图例字体大小
fontsize : int or float or {‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’}
(3)设置图例边框及背景
plt.legend(loc='best',frameon=False) #去掉图例边框
plt.legend(loc='best',edgecolor='blue') #设置图例边框颜色
plt.legend(loc='best',facecolor='blue') #设置图例背景颜色,若无边框,参数无效
对于边框还可以采用面向对象方式:
legend = plt.legend(["First", "Second"])
frame = legend.get_frame()
frame.set_facecolor('blue')
(4)设置图例标题
legend = plt.legend(["CH", "US"], title='China VS Us')
(5)设置图例名字及对应关系
legend = plt.legend([p1, p2], ["CH", "US"])
from matplotlib import pyplot as plt
import numpy as np
train_x = np.linspace(-1, 1, 100)
train_y_1 = 2*train_x + np.random.rand(*train_x.shape)*0.3
train_y_2 = train_x**2+np.random.randn(*train_x.shape)*0.3
p1 = plt.scatter(train_x, train_y_1, c='red', marker='v' )
p2= plt.scatter(train_x, train_y_2, c='blue', marker='o' )
legend = plt.legend([p1, p2], ["CH", "US"], facecolor='blue')
plt.show()
2. plt.scatter()
用于画散点图。
X和Y是长度相同的数组
size,点的大小,标量或与数据长度相同的数组
color,点的颜色,标量或与数据长度相同的数组
marker
MarketStyle,可选,点的形状,默认'o'
Colormap,可选,默认'None'
Normalize,亮度设置,0-1
vmin,vmax
alpha
透明度,0-1
linewidths
scatter(x, y, 点的大小, 颜色,标记),这是最主要的几个用法,如果括号中不写s= c=则按默认顺序,写了则按规定的来,不考虑顺序
import matplotlib.pyplot as plt
#x,y,大小,颜色
plt.scatter([1,2,3,4],[2,4,6,8],[10,20,30,400],['r', 'b','y','k'])
plt.scatter([1,2,3,4],[9,8,7,6],s=10,c='b', marker='v')
plt.show()
import numpy as np
import matplotlib.pyplot as plt
# Fixing random state for reproducibility
np.random.seed(19680801)
N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = (30 * np.random.rand(N))**2 # 0 to 15 point radii
plt.scatter(x, y, s=area, c=colors, alpha=0.5)
plt.show()
3. plt.plot()
一个通用命令,将(x, y)绘制成线条或散点图。
数据,x是可选的,默认range(len(y))
format,格式,形状,例如,'ro'表示红圈
标有数据的对象,可选
其中,线条的格式还可以使用如下线属性:
alpha
float,透明度
fillstyle
{'full', 'left', 'right', 'bottom', 'top', 'none'}
linestyle/ls
{'-', '--', '-.', ':', '', (offset, on-off-seq), ...}
linewidth/lw
float
marker
marker style
markeredgecolor/mec
color
markeredgewidth/mew
float
markerfacecolor/mfc
color
markersize/ms
float
当线属性与fmt冲突时,线属性优先。
一些默认的写法:
>>> plot(x, y) # plot x and y using default line style and color
>>> plot(x, y, 'bo') # plot x and y using blue circle markers
>>> plot(y) # plot y using x as index array 0..N-1
>>> plot(y, 'r+') # ditto, but with red plusses
import numpy as np
import matplotlib.pyplot as plt
X = np.linspace(0, 2*np.pi, 32, endpoint=True)
C,S = np.cos(X), np.sin(X)
#plt.plot(X,C)
#plt.plot(X,S)
plt.plot(X, C, 'go--')
plt.plot(X,S, color='green', marker='o', linestyle='dashed')
# 一个是fmt,一个是线属性,但是它们的格式是一样的
plt.show()
4. plt.figure()
用于创建一个新图。
新图的编号,默认递增
figsize
宽度,高度,以英寸为单位
分辨率,整数
facecolor
edgecolor
frameon
若为False,则没有边框
clear
若为True,如果图的编号已存在则先清除
如果有多个figure,请显示的调用 pyplot.close() 关闭你不需要使用的figure,以便pyplot能正确的清理内存。
import numpy as np
import matplotlib.pyplot as plt
X = np.linspace(0, 2*np.pi, 32, endpoint=True)
C,S = np.cos(X), np.sin(X)
plt.figure(num=1)
plt.plot(X,C)
#plt.close()
plt.figure(2)
plt.plot(X,S)
plt.figure(3)
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.show()
会连续展现三张图,注意与下面subplot的区别。
对于只有一张图时,也有作用,例如设置尺寸和分辨率等:
# 创建一个8x6大小的figure,并设置每英寸80个像素点
plt.figure(figsize=(8, 6), dpi=80)
5. plt.subplot()
用于在一个Figure对象里画多个子图(Axes)。
其调用格式:subplot(numRows, numCols, plotNum),即(行、列、序号)。
图表的整个绘图区域被分成numRows行和numCols列,plotNum参数指定创建的Axes对象所在的区域(左上角序号为1)
如果行数、列数和序号都是个位数可以简写成一个整数,否则需要用逗号隔开。
import numpy as np
import matplotlib.pyplot as plt
X = np.linspace(0, 2*np.pi, 32, endpoint=True)
C,S = np.cos(X), np.sin(X)
plt.subplot(221)
plt.plot(X,C)
plt.subplot(2,2,2) #可以隔开,也可以不隔开
plt.plot(X,S)
plt.subplot(212)
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.show()
参考链接:
1. CSDN开码牛-matplotlib命令与格式:图例legend语法及设置
2. CSDNweixin_41950276-plt.legend( )函数,给图像加上图例
3. matplotlib.pyplot.legend官方文档
4. CSDNxiaodaicai4452-python绘图基础—scatter用法
5. matplotlib.pyplot.scatter官方文档
6. matplotlib.pyplot.plot官方文档
7. matplotlib.pyplot.figure官方文档
8. CSND繁小华-matplotlib绘制多个子图——subplot
个性签名:时间会解决一切