poetry

满堂花醉三千客,一剑霜寒十四州。
东南永作金天柱,谁羡当时万户侯。

目录

散点图:用于描述两个变量的相关性—–scatter
折线图:多用于描述变量随时间的变化—–plot
条形图:比较多个项目分类的数据大小
直方图:表示数据的分布情况(连续)
饼状图:显示各项大小与总和的比例
箱型图:上边缘,上四分位数,中位数,下四分位数,下边缘,异常值


散点图:用于描述两个变量的相关性—–scatter

scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None,vmin=None, vmax=None,alpha=None, linewidths=None, verts=None,edgecolors=None, *, data=None, **kwargs)

import numpy as np
import matplotlib.pyplot as plt

#随机正相关
m=np.random.randn(1000)
n=m+np.random.randn(1000)*0.5
plt.scatter(m,n)
plt.show()

随机正相关散点图

import numpy as np
import matplotlib.pyplot as plt

#随机不相关
x=np.random.randn(1000)
y=np.random.randn(1000)

plt.scatter(x,y)
plt.show()

随机不相关散点图

界面定制:  

#s:点的面积
#c:颜色
#marker:标志形状
#alpha:透明度

plt.scatter(x,y,s=100,c='r',marker='X',alpha=0.5)

#marker的种类:https://matplotlib.org/api/markers_api.html?highlight=marker#module-matplotlib.markers

折线图:多用于描述变量随时间的变化—–plot

def plot_date(x, y, fmt=’o’, tz=None, xdate=True, ydate=False, *,data=None, **kwargs)

#def plot(*args, scalex=True, scaley=True, data=None, **kwargs)
import numpy as np
import matplotlib.pyplot as plt
#折线图
#生成从-10~10平均等分的100个数
x=np.linspace(-10,10,100)
y=x**2
plt.plot(x,y)
plt.show()

折线图

文件中有日期的折线图:

1、converters={0:mdate.strpdate2num(‘%Y’)}

2、plt.plot_date()

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdate

#北京房价折线图
date,beijing,tianjing,shijiazhuang=np.loadtxt('demo.csv',delimiter=',',converters={0:mdate.strpdate2num('%Y')},skiprows=1,usecols=(0,1,2,3),unpack=True,encoding='GBK')


#skiprows:从第几行开始导入
#usecols:导入第几列
#unpack:False-从左往右形成一行,True-从上往下形成一行
#delimiter:csv中每个数据的分隔符


plt.plot_date(date,beijing,linestyle='-',marker='o',color='red')
plt.plot_date(date,tianjing,linestyle='-',marker='o',color='blue')
plt.plot_date(date,shijiazhuang,linestyle='-',marker='o',color='black')

#linestyle:直线、虚线

plt.show()

北京房价折线图

import numpy as np
import matplotlib.pyplot as plt

#画出正弦函数的图像
x=np.linspace(-10,10,100)
y=np.sin(x)
plt.plot(x,y)
plt.show()

正弦函数图

条形图:比较多个项目分类的数据大小

import numpy as np
import matplotlib.pyplot as plt
#def bar(x, height, width=0.8, bottom=None, *, align='center',data=None, **kwargs):
N=5
#并列
y=[22,55,33,42,60]
index=np.arange(N)
x=plt.bar(x=index,height=y,width=0.4,color='red')
plt.show()




import numpy as np
import matplotlib.pyplot as plt
N=5
#并列
y=[22,55,33,42,60]
index=np.arange(N)
x=plt.barh(y=index,width=y,color='red')
plt.show()

斜侧并列条形图

1
2
3
4
5
6
7
8
9
10
11
import numpy as np
import matplotlib.pyplot as plt
N=5
#并列
y1=[22,55,33,42,60]
y2=[21,20,45,10,54]
bar_width=0.3
index=np.arange(N)
plt.bar(x=index,height=y1,color='red',width=0.3)
plt.bar(x=index+bar_width,height=y2,color='blue',width=0.3)
plt.show()

多列条形图

1
2
3
4
5
6
7
8
9
10
11
12
import numpy as np
import matplotlib.pyplot as plt
N=5

#层叠-就是将下层图像置为上层的buttom
y1=[22,55,33,42,60]
y2=[21,20,45,10,54]
index=np.arange(N)
plt.bar(index,y1,0.2,color='red')
plt.bar(index,y1,0.2,y1,color='blue')
#不能写x=index,height=y1等
plt.show()

单列多类条形图

直方图:表示数据的分布情况(连续)

#直方图
import numpy as np
import matplotlib.pyplot as plt
mu=100 #mean of the distrubution
sigma=20 #standard deviation of distribution
x=np.random.randn(2000)
plt.hist(x,bins=10,color='red',density=False,edgecolor='k')
#bins:多少块
#density :是否标准化,标准化之后为频组
#edgecolor:颜色分割线

plt.show()

直方图

#双变量直方图
import numpy as np
import matplotlib.pyplot as plt
x=np.random.randn(2000)+2
y=np.random.randn(2000)+3
plt.hist2d(x,y,bins=50)
plt.show()

双变量直方图

饼状图:显示各项大小与总和的比例

#饼状图
import numpy as np
import matplotlib.pyplot as plt
labels='A','B','C','D'
fraces=[15,30,25,10]
explode=[0,0,0,0.05]
plt.pie(x=fraces,labels=labels,autopct='%0.f%%',explode=explode,shadow=True)
#autopct:显示百分比
#explode:突出显示
#shadow:加阴影

plt.show()

饼图

箱型图:上边缘,上四分位数,中位数,下四分位数,下边缘,异常值

#箱型图
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(1)
data=np.random.normal(size=1000,loc=0,scale=1)
plt.boxplot(data,sym='x',whis=1.5)
#sym:符号
#whis:异常值的区域
plt.show()

箱型图

#多箱型图
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(1)
data=np.random.normal(size=(1000,4),loc=0,scale=1)
labels=['A','B','C','D']
plt.boxplot(data,sym='x',whis=1.5)
plt.show()

多箱型图