基于matplotlib和seaborn数据挖掘,数据可视化

利用python中数据可视化工具matplotlib和seaborn实现可视化
所需数据使用上篇numpy库和pandas库生成数组,矩阵,dataframe。

  • 导入所需库:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

  • 绘制函数图(plt.plot())
选择图形主题 plt.sytle.use():五种主题:暗网格(darkgrid),白网格(whitegrid),全黑(dark),全白(white),全刻度(ticks)默认为全刻度
绘制曲线图 matplotlib.pyplot.plot(*args, scalex=True, scaley=True, data=None, **kwargs):*args包括所需数据,曲线的颜色和样式
显示图形 matplotlib.pyplot.show(args,* kw )
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

plt.style.use("seaborn-darkgrid")
#定义x
x=np.arange(0,3*np.pi,0.1)
#生成正弦函数
y=np.sin(x)
#调用plot函数实现可视化
plt.plot(x,y)
plt.show()

在这里插入图片描述

  • 绘制子图:
    把画布切分成一个一个子图
    如上,生成主题,函数
添加子图 matplotlib.pyplot.subplot(* args,** kwargs ):在当前图中添加子图。*args是一个3位整数或三个独立的整数,用于描述子图的位置
绘制子图 plt.plot()
显示子图 plt.show()
设置标题 plt.title(" ")
plt.style.use("seaborn-darkgrid")
x=np.arange(0,4*np.pi,0.1)
y=np.sin(x)
y2=np.cos(x)
#将原图分成两行一列两个子图,并取第一个子图
plt.subplot(2,1,1)
plt.plot(x,y)
plt.subplot(2,1,2)
plt.plot(x,y2)
plt.show()

在这里插入图片描述

  • 修改参数值
设置图像大小 plt.figure(figsize=(8,6), dpi=80) # 创建一个8x6大小的图像, dpi=80表示分辨率每英尺80点
设置曲线颜色,宽度,标签,样式 plt.plot(X, C, color=“blue”,linewidth=1.0,label=“Blue”,linestyle="–")C表示一个函数,蓝色的,线宽为1 个像素,图例表签"Blue",linestyle表示曲线样式
显示设置图例 plt.legend()
设置x轴范围 plt.xlim()
设置x轴刻度 plt.xticks()
设置y轴范围 plt.ylim()
设置y轴刻度 plt.yticks()
保存图像 plt.savefig()
plt.style.use("seaborn-dark")
plt.figure(figsize=(4,3),dpi=80)
#创建一个1*!的子图 取第一个
plt.subplot(111)
x=np.linspace(-np.pi, np.pi, 256,endpoint=True)
C=np.cos(x)
S=np.sin(x)
plt.plot(x, C, color="blue",linewidth=1.0,label="Blue",linestyle="--")
# 绘制一个绿色的,线宽为1个像素的正弦曲线,设置图例标签Blue,linestyle表示曲线的样式
plt.plot(x, S, color="green", linewidth=1.0, label="Green", linestyle="-.")

plt.legend()
plt.xlim(-4.0,4.0)
plt.xticks(np.linspace(-4,4,9,endpoint=True))
plt.ylim(-1.0,1.0)
plt.yticks(np.linspace(-1,1,5,endpoint=True))
plt.show()

在这里插入图片描述

  • 绘制散点图
    matplotlib实现散点图
绘制散点图 matplotlib.pyplot.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):绘制散点图。X、y表示xy轴的数据,s表示标量,c表示颜色,marker表示标记样式。
a = np.random.randint(0,20,15)	# 随机生成数据
b = np.random.randint(0,20,15)
print(a)
print(b)i
plt.scatter(a, b)					# 绘制散点图
plt.show()

在这里插入图片描述
seaborn实现散点图:
创建dataframe

绘制散点图 seaborn.jointplot(x, y, data=None, kind=‘scatter’, stat_func=None, color=None, height=6, ratio=5, space=0.2, dropna=True, xlim=None, ylim=None, joint_kws=None, marginal_kws=None, annot_kws=None, **kwargs):用两个变量进行绘图。color : 颜色;size : 默认 6,图的尺度大小(正方形);ratio : 中心图与侧边图的比例;space : 中心图与侧边图的间隔大小;s : 点的大小;linewidth : 线的宽度;{x, y}lim : x、y轴的范围。
data=pd.DataFrame(np.random.randn(5,2),columns=list('AB'))
print(data)
sns.jointplot(x='A',y='B',data=data)
plt.show()

在这里插入图片描述
在这里插入图片描述

  • 绘制柱状图
matplotlib实现柱状图 matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align=‘center’, data=None, **kwargs):绘制柱状图。X:横坐标;height:条形高度;width:每一个条形的宽度,color:每一个条形的颜色。
添加网格显示 plt.grid()
seaborn实现柱状图 seaborn.countplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, orient=None, color=None, palette=None, saturation=0.75, dodge=True, ax=None, **kwargs):柱状图。x,y: xy轴;data:数据;hue:按照列名中的值分类形成分类的柱状图;order, hue_order:用于控制柱状图的顺序;palette:调色板,控制不同的颜色。
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']	# 解决中文不显示问题
level = ['tk', 'shtk', 'hztk']
x = range(len(level))		# 横坐标
y = [1,3,2]				# 纵坐标
plt.figure(figsize=(4,3),dpi=80)		# 创建画布
plt.bar(x, y, width=0.5, color=['b','r','g'])# 绘制柱状图
plt.xticks(x,level)
plt.grid(linestyle="--", alpha=0.5) # 添加网格显示
plt.show()

在这里插入图片描述

df = pd.DataFrame(['优秀',"不错","666","666","不错","不错"],columns=["level"])
sns.countplot(x="level",data=df)
plt.figure(figsize=(4,3),dpi=80)
plt.show()

在这里插入图片描述

  • 绘制直方图
matplotlib实现直方图 matplotlib.pyplot.hist(x,bins=None,range=None,density=None, weights=None, cumulative=False, bottom=None, histtype=‘bar’, align=‘mid’, orientation=‘vertical’, rwidth=None, log=False, color=None, label=None, stacked=False, normed=None, *, data=None, **kwargs):绘制直方图。X:指定每个bin(箱子)分布的数据,对应x轴;bins:指定bin(箱子)的个数,也就是总共有几条条状图;normed:指定密度,也就是每个条状图的占比例比,默认为1;color :指定条状图的颜色。
seaborn实现直方图 seaborn.distplot(a, bins=None, hist=True, kde=True, rug=False, fit=None, hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None, color=None,vertical=False, norm_hist=False, axlabel=None, label=None, ax=None):绘制直方图。A:数据;hist:是否显示直方图;kde:是否显示核密度估计;bins:控制直方图的划分;fit:控制拟合的参数分布图
x = np.random.randint(0,30,90)
print(x)
plt.figure(dpi=100)
distance = 2		# 设置组距
plt.hist(x,facecolor="blue", edgecolor="black", alpha=0.7) # 绘制直方图
plt.xticks(range(min(x), max(x))[::2]) # 修改x轴刻度显示
plt.grid(linestyle="--", alpha=0.5) # 添加网格显示
plt.show()#  显示图像


在这里插入图片描述

sns.distplot(x, kde=True)

在这里插入图片描述

发布了20 篇原创文章 · 获赞 23 · 访问量 987

猜你喜欢

转载自blog.csdn.net/surijing/article/details/104649327