matplotlib的使用
matplotlib默认不支持中文字符,因为默认的英文字体无法显示汉字
设置字体的样式方法一:
font = {'family':'MicroSoft YaHei',
'weight':'bold',
'size':'12'}
matplotlib.rc('font', **font)
方法二(设置中文的方法):
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
matplotlib能够绘制折线图,散点图,柱状图,直方图,箱线图,饼图等
(折线图,散点图,条形图,柱状图,多个柱形图,直方图)
1)首先导包
from matplotlib import pyplot as plt
2)然后准备数据x,y
3)再设置图的大小和分辨率
设置图的大小和分辨率代码:
plt.figure(figsize=(20,8),dpi=80)
figure指我们画的图
传入dip参数,让图像更加清晰
dpi(dots per inch):每英寸点数
1、折线图
# 折线图的绘制
plt.plot(x,y)
# plt.xticks(x) -------设置x的刻度 plt.yticks(y)---------设置y的刻度
plt.xticks(x[::2])
# 显示图片效果
plt.show()
(加水印,改变折线样式,加文本注释的方法):
img = plt.imread('dog (1).jpg')
plt.figimage(img,700,100,origin='upper',alpha=0.3) # 加水印
# 线条宽度 线条样式
plt.plot(x,y,label = '我的',color = 'green',linewidth = '5',linestyle = ':')
plt.plot(x,y2,label = '同桌的',color = 'red',linewidth = '10',linestyle = '-.')
plt.text(0,1,'他好帅',color = 'y',size = '10',ha = 'center',va = 'center',rotation = 25)
# rotation为透明度
2、散点图
plt.scatter(x,y)
3、条形图
准备好数据a,b
plt.barh(a[::-1],b[::-1],height=0.3,color = 'orange')
plt.yticks(range(len(a)),a[::-1])
条形图:
(条形图排序———提升版):
准备好数据a,b(b是数值)
# 1.让两个数据产生关联(字典)
a2 = dict(zip(a,b))
# 2、 b进行排序
new_b = sorted(b)
print(new_b)
# 3. 把 new_b中的每一个值去 a2中找对应的键,组成新的列表,即排完序后的键
new_a = []
for i in new_b:
for j in a2:
if a2[j] == i:
new_a.append(j)
print(new_a)
plt.figure(figsize=(20,8))
plt.barh(new_a,new_b,height=0.3,color = 'orange')
plt.yticks(range(len(a)),new_a)
plt.show()
4、柱状图
plt.bar(a,b,width=0.2,color = 'orange')
plt.xticks(range(len(a)),a,rotation = 270)
柱状图:
5、多个柱形图
准备好三组数据b_14,b_15,b_16
# 三组数据的刻度位置
x_14 = range(len(a))
x_15 = [i + 0.2 for i in x_14]
x_16 = [j + 0.4 for j in x_14]
# 绘制这三组数据
plt.bar(x_14,b_14,width=0.2,label = '9月14日')
plt.bar(x_15,b_15,width=0.2,label = '9月15日')
plt.bar(x_16,b_16,width=0.2,label = '9月16日')
a = ['猩球崛起3:终极之战','敦刻尔克','蜘蛛侠:英雄归来','战狼2']
plt.xticks(x_15,a)
# 设置图例
plt.legend(loc = 'best')
多个柱形图:
6、直方图
准备好数据a
# d 代表组距
d = 3
# 组数 = 极差/组距 100个数据以内尽可能分5~12组比较合适
nums = (max(a)-min(a))//3 # 向下整除,保留整数
plt.hist(a,nums)
# 把最后一个刻度加上
plt.xticks(range(min(a),max(a)+d,d)) # 调网格大小
# 加网格线
plt.grid(alpha = 0.3)
plt.show()
直方图:
---------------------------------------------------------------------
---------------------------------------------------------------------
三个绘图库的差别
seaborn中的柱状图:
import seaborn as sns
import matplotlib.pyplot as plt
cate = ['a','b','c','d']
data = [20,25,35,10]
sns.barplot(x=cate,y=data)
plotly中的柱状图:
import plotly.graph_objects as go
cate = ['a','b','c','d']
data = [20,25,35,10]
fig = go.Figure(data=[go.Bar(x=cate,y=data)])
fig.update_layout(title='柱状图',xaxis_title='x轴',yaxis_title='y轴')
matplotlib中的柱状图:
import matplotlib.pyplot as plt
cate = ['a','b','c','d']
data = [20,25,35,10]
plt.bar(cate,data)
numpy中数组的创建
先导包:
import numpy as np
第一种创建array数组的方式:
t1 = np.array([1,2,3,4,5,6],dtype='int64')
print(t1)
print(t1.dtype)
第二种创建数组的方式:
t2 = np.array(range(1,6))
t2
第三种创建数组的方式:
t3=np.arange(1,6)
t3
结果如图:
数组的形状:
类型的问题:
小数问题:
几维数组的问题:
numpy数组的运算
同样,先导包:
import numpy as np
一维数组:
t1=np.arange(12)
print(t1.shape)
二维数组:
t2 = np.array([[1,2,3],[4,5,6]])
print(t2)
print(t2.shape)
在创建时指定数组的形状:
t5 = np.arange(24).reshape((2,3,4))
print(t5)
降至一维数组:
运算中注意的点:
注意:
4*6 和 2*6不能相互运算
4*6 和 1*6 可以相互运算
4*6 和 4*1 可以相互运算
轴的概念:
在numpy中可以理解为方向,使用0,1,2…数字表示
numpy读取数据
先把数据导入进来:
取下标为1的行:
取多行,取列的一些方法:
numpy中数组的转置
二维数组转置方法:
实现效果如下: