利用python中数据可视化工具matplotlib和seaborn实现可视化
所需数据使用上篇numpy库和pandas库生成数组,矩阵,dataframe。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
选择图形主题 |
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=np.arange(0,3*np.pi,0.1)
y=np.sin(x)
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)
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="--")
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.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])
plt.grid(linestyle="--", alpha=0.5)
plt.show()
sns.distplot(x, kde=True)