[小白系列][可视化基础]数据可视化视图从入门到不放弃,数据可视化视图都有哪些,怎么选用,我们一起来康康

1.可视化图形的简单分类

4种类别:
比较:展示事物的排列顺序,比如条图。
联系:查看两个变量之间关系,比如气泡图。
构成:每个部分所占整体的百分比,如饼图。
分布:关心各数值范围包含多少项目,如柱图
在这里插入图片描述

2.Python中常用的两个可视化工具

matplotlib和seaborn
调用方式:

import matplotlib.pyplot as plt
import seaborn as sns

区别:
Matplotlib是一个较为基础的工具,Seaborn的底层是基于Matplotlib的,
展开说一下:Seaborn是用户把自己常用到的可视化绘图过程进行了函数封装,形成的一个“快捷方式”,他相比Matplotlib的好处是代码更简洁,可以用一行代码实现一个清晰好看的可视化输出。主要的缺点则是定制化能力会比较差,只能实现固化的一些可视化模板类型;而Matplotlib是可以实现高度定制化绘图的,高度定制化可以让你获得最符合心意的可视化输出结果,但也因此需要设置更多的参数,因而代码更加复杂一些。

3.九种常用视图及其具体调用代码

seaborn画图函数,主要针对pandas的DataFrame或numpy数据,有以下几种主要形式:

sns.图名(x=‘X轴 列名’, y=‘Y轴 列名’, data=原始数据df对象)

sns.图名(x=‘X轴 列名’, y=‘Y轴 列名’, hue=‘分组绘图参数’, data=原始数据df对象)

sns.图名(x=np.array, y=np.array[, …])

1.散点图(Scatter Chart)

表现两个变量之间的关系

import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt
# 数据准备
N = 900
x = np.random.randn(N)
y = np.random.randn(N)
# 利用matplotlib绘制散点图
plt.scatter(x,y,marker = 'x')  # marker表示散点图的呈现方式为x,默认呈现方式为小圆点
plt.show()

在这里插入图片描述

扫描二维码关注公众号,回复: 10350979 查看本文章
import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt
import seaborn as sns

# 数据准备
N = 500
x = np.random.randn(N)
y = np.random.randn(N)

# 用Seaborn画图,可以直接从DataFrame入手画图
df = pd.DataFrame({'x1':x,'y1':y})
# 指定x轴标签为x1,y轴标签为y1,加载数据到jointplot,指定jointplot画图类型为散点图
sns.jointplot(x = 'x1',y = 'y1',data = df,kind = 'scatter',marker = 'x')  
plt.show()

在这里插入图片描述

2.折线图(Line Chart)

折线图适合二维的大数据集,尤其是那些趋势比单个数据点更重要的场合,它还适合多个二维数据集的比较
在这里插入图片描述

# 画折线图
import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt
import seaborn as sns
  
# 加载数据
x = []
for i in range(1900,1911,1):
    x.append(i)
y = [265, 323, 136, 220, 305, 350, 419, 450, 560, 720, 830]

# 用matplotlib画折线图
print('用matplotlib画折线图\n')
plt.plot(x,y)
plt.show()

在这里插入图片描述

# 画折线图
import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt
import seaborn as sns
  
# 加载数据
x = []
for i in range(1900,1911,1):
    x.append(i)
y = [265, 323, 136, 220, 305, 350, 419, 450, 560, 720, 830]

# 用seaborn画折线图
print('用seaborn画折线图\n')
df = pd.DataFrame({'x':x,'y':y})

在这里插入图片描述

3.条形图(Bar Chart)

用于分类展示

# 画条形图
import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt
import seaborn as sns

# 数据加载
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签,设置为黑体
x = ['中国','意大利','日本','美国']
y = [12,34,56,77]

# 用matplotlib画图
plt.bar(x,y)
plt.show()

在这里插入图片描述

# 画条形图
import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt
import seaborn as sns

# 数据加载
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签,设置为黑体
x = ['中国','意大利','日本','美国']
y = [12,34,56,77]

# 用seaborn画图
sns.barplot(x,y)
plt.show()

在这里插入图片描述

import matplotlib.pyplot as plt
%matplotlib inline 
'''
操作时同时运行%matplotlibinline,那么绘图下方就能自动显示代码块,
否则用户每次绘图时都需要输入plt.show()来创建新图。
此功能是Jupyter Notebook / IPython独有的
'''
df = pd.DataFrame(np.random.rand(10,4), columns=['a','b','c','d'])
# 使用bar()生成直方图,barh()生成水平条形图(要生成一个堆积条形图,需要指定stacked=True)
print('条形图\n')
df.plot.bar()
plt.show()
print('水平条形图\n')
df.plot.barh()
plt.show()
print('堆积条形图\n')
df.plot.bar(stacked=True)
plt.show()
print('水平堆积条形图\n')
df.plot.barh(stacked=True)
plt.show()

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

4.箱线图(Boxplot)

展现数据的分布和关联情况
有上边缘,上四分位数,中位数,下四分位数,下边缘

#  箱线图:
# 数据准备
# 生成0-1之间的10*4维度数据
data=np.random.normal(size=(10,4)) 
lables = ['A','B','C','D']
# 用Matplotlib画箱线图
plt.boxplot(data,labels=lables)
plt.show()

在这里插入图片描述

#  箱线图:
# 数据准备
# 生成0-1之间的10*4维度数据
data=np.random.normal(size=(10,4)) 
lables = ['A','B','C','D']
# 用Seaborn画箱线图
df = pd.DataFrame(data, columns=lables)
sns.boxplot(data=df)
plt.show()

在这里插入图片描述

5.饼图(Pie Chart)

用于分类展示
P.S:目前为止,饼图只可以由matplotlib画,seaborn不可以画饼图

# 饼图(只可以由matplotlib画,seaborn不可以画饼图)
import matplotlib.pyplot as plt 

nums = [34,56,78,90]
nums_labels = ['china','usa','uk','eu']
# 采用matplotlib画出来
plt.pie(x= nums,labels = nums_labels)
plt.show()

在这里插入图片描述

6.热力图(Heatmap)

表可以展现多变量之间的相关系数

# 热力图
np.random.seed(33)
data = np.random.rand(3,3)
sns.heatmap(data)
plt.show()

在这里插入图片描述

7.蜘蛛图(雷达图)(Radar map)

# 蜘蛛图:
# 数据准备
labels=np.array([u"推进","KDA",u"生存",u"团战",u"发育",u"输出"]) 
# u在这里的作用是表明编码用的是unicode编码方式
stats=[76, 58, 67, 97, 86, 58]
# 画图数据准备,角度、状态值
angles=np.linspace(0, 2*np.pi, len(labels), endpoint=False)
stats=np.concatenate((stats,[stats[0]]))
angles=np.concatenate((angles,[angles[0]]))
# 用Matplotlib画蜘蛛图
fig = plt.figure()
ax = fig.add_subplot(111, polar=True)   
ax.plot(angles, stats, 'o-', linewidth=2)
ax.fill(angles, stats, alpha=0.25)
# 设置中文字体
plt.rcParams['font.sans-serif']=['SimHei'] 
ax.set_thetagrids(angles * 180/np.pi, labels)
plt.show()

在这里插入图片描述

8.二元变量分布(双变量密度估计图)

展现数据的分布和关联情况,即用于统计相关性

import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt 
import seaborn as sns 
data = sns.load_dataset('flights')  
#  flights数据集是美国人在1950到1960年买飞机票的数据集,是seaborn自带的数据集
display(data)
# 用Seaborn画二元变量分布图(散点图,核密度图,Hexbin图)
sns.jointplot(x = data['year'],y = data['passengers'],kind = 'scatter')
sns.jointplot(x=data['year'],y = data['passengers'],kind ='kde')
sns.jointplot(x=data['year'],y=data['passengers'],kind = 'hex')
plt.show()

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

9.成对关系图( Pair Diagram)

可以展现多个变量,两两之间的散点图,以及自身的分布规律,在seaborn中可以使用pairplot()绘制。

参数diag_kind:自身分布的展现类型(如:直方图,密度图)

参数markers:散点图中点的形状

参数plot_kws:调节点的大小,颜色,线的宽度等

参数diag_kws:展示形式的调整(如:密度图中十分填充)

参数data:可视化的数据对象

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 
import seaborn as sns 

data = sns.load_dataset('flights')
sns.pairplot(data)
plt.show()

在这里插入图片描述

发布了12 篇原创文章 · 获赞 15 · 访问量 2436

猜你喜欢

转载自blog.csdn.net/KaelCui/article/details/105192768
今日推荐