可以查看pyplot官方教程
简单的说就是把数据显示成图形用的,比如曲线,棒图,饼图,总之就是数据可视化。
方法 | 说明 |
---|---|
figure() | 创建画布有返回值,重要参数dpi分辨率,figsize画布大小 |
xlabel(),ylabel() | 通过plt.ylabel(‘纵轴名’)指定轴的名称 |
plot() | 线形图 |
axis() | 参数是 [xmin, xmax, ymin, ymax] 列表作为参数来指定了各个轴的视口大小 |
show() | 展示方法,展示之后会清空内存中图片,因此要先保存图片再show |
savefig() | 保存图片参数是保存路径和文件名 |
legend() | 函数主要的作用就是给图加上图例,plt.legend([x,y,z])里面的参数使用的是list的的形式将图表的的名称喂给这和函数。 |
plt.xticks(bins) | xticks(list) 使用list的值进行 x 轴刻度的标识 |
title() | 标题 |
grid() | 设置为true添加网图格plt.grid(True, linestyle=’–’, alpha=0.5) |
单个解决方式,以y轴名为例
from matplotlib.font_manager import FontProperties
plt.ylabel('平方值',fontproperties=FontProperties(fname='/System/Library/Fonts/PingFang.ttc'))
当前文件解决方式
# 修改字体
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
plt.rcParams['font.size'] = 20 # 修改字体大小
plt.rcParams['axes.unicode_minus'] = False # 字体是中文时显示负数会有bug,去除一下
可能会不展示图,加上以下代码即可
%matplotlib inline
def plot(*args, scalex=True, scaley=True, data=None, **kwargs):
fmt = '[color][marker][line]'
先简单的创建一个试试:
plt.ylabel('平方值',fontproperties=FontProperties(fname='/System/Library/Fonts/PingFang.ttc'))
arr1 = np.arange(0,5)
plt.axis([0,6,0,20]) # 指定了x和y轴最大最小值
plt.plot(arr1, arr1**2, 'r<--') # fmt格式指定为红色线段,<标记点,虚线格式
plt.show()
缩写字母 | 代表颜色 | 标记缩写 | 代表的标记格式 |
---|---|---|---|
‘b’ | blue | ‘.’ | 点标记 |
‘g’ | green | ‘,’ | 像素标记也就是默认 |
‘r’ | red | ‘o’ | 大点标记 |
‘c’ | cyan | ’v‘ ‘^’ ‘<’ ‘>’ | 分别是三角形标记的四个方向 |
‘m’ | magenta | ‘s’ | 正方形 |
‘y’ | yellow | ‘p’ | 五角形 |
‘k’ | black | ‘*’ | 五角星 |
‘w’ | white | ‘H’ ‘h’ | 两个方向的六边形 |
- | - | ‘1’ ‘2’ ‘3’ ‘4’ | 三菱线的四个方向 |
字符 | 代表的线型 | ‘+’ | +型 |
‘-’ | 普通线型 | ‘x’ | x型 |
‘–’ | - -虚线 | ‘d’ ‘D’ | d是菱形,D是倒正方形 |
‘-.’ | - .虚线 | ‘|’ | 竖线型 |
‘:’ | . .虚线 | ‘_’ | 下划线型 |
第一种方法:生成对象在绘图
# 创建画布,参数dpi分辨率,figsize画布大小
fig = plt.figure()
# 分成多少块,第三个参数是指定第几块
ax1 = fig.add_subplot(2,2,1) # 2*2,选第一个
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
ax4 = fig.add_subplot(2,2,4)
# 用这些ax1-4对象的plot方法绘制内容即可
arr2 = list(data['price']) # data是读取的文件内容,这里没展示
arr3 = list(data['AREA'])
# 面积和价格,第四区域
ax4.plot(arr3,arr2, 'ro')
第二种方法,分割直接写
fig = plt.figure()
arr1 = np.random.randint(10,20,20)
arr2 = np.random.randint(10,20,20)
# 2行3列的第一个区域
fig.add_subplot(2,3,1) # 不用逗号也一样
plt.plot(arr1)
fig.add_subplot(235) # 2行3列的第5个区域
plt.plot(arr2)
plt.show()
常见的参数:
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS'] # 中文
x = np.arange(5)
y1 = np.random.randint(10,100,5)
y2 = np.random.randint(10,100,5)
fig = plt.figure()
# fig.add_subplot(1,2,1)
# 指定x,y的值
plt.bar(x, y1,width=0.4,label='第一组')
# fig.add_subplot(1,2,2)
plt.bar(x+0.4,y2,width=0.4,label='第二组')
# 显示图例
plt.legend()
plt.show()
几个常见的参数
arr1 = [131, 98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114, 119, 128, 121, 142, 127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 115, 99, 136, 126, 134,]
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
plt.rcParams['font.size'] = 20 # 修改字体大小
plt.rcParams['axes.unicode_minus'] = False # 字体是中文时显示负数会有bug,去除一下
# 展示刻度
plt.xticks(range(min(arr1), max(arr1))[::4])
# 个数
bins = (max(arr1) - min(arr1)) // 4
print(bins)
plt.hist(arr1, bins=bins, density=1, alpha=0.8)
plt.grid(True, linestyle="--", alpha=0.5)
plt.ylabel('数量')
plt.title('直方图')
plt.show()
两个案例:
plt.scatter(arr1,arr1**2,[10,20,30,40,50],['r','b','y','k','c'])
data = {'a': np.arange(50),
'c': np.random.randint(0, 50, 50),
'd': np.random.randn(50)}
data['b'] = data['a'] + 10 * np.random.randn(50)
data['d'] = np.abs(data['d']) * 100
# 指定颜色和大小,数据
plt.scatter('a', 'b', c='c', s='d', data=data)
plt.show()
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
# 准备数据
movie_name = ['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','降魔传','追捕','七十七天','密战','狂兽','其它']
place_count = [60605,54546,45819,28243,13270,9945,7679,6799,6101,4621,20105]
# 展示
plt.pie(place_count, labels=movie_name,autopct="%1.2f%%")
# 显示图例
plt.legend()
# 添加标题
plt.title("电影排片占比")
# 规定为正圆
plt.axis('equal')
plt.show()
arr1 = np.random.randint(10,50,(10,20))
plt.imshow(arr1) # 混淆矩阵 cmap=plt.cm.Blues颜色风格
plt.colorbar() # 颜色和值对应图
plt.show()