大数据可视化技术——平行坐标图、成对关系图、高级折线图

一、平行坐标图
平行坐标图是对于具有多个属性问题的一种可视化方法,下图为平行坐标图的基本样式,数据集的一行数据在平行坐标图中用一条折线表示,纵向是属性值,横向是属性类别(用索引表示)。
pandas.plotting.parallel_coordinates(frame, class_column, cols=None, ax=None, color=None, use_columns=False, xticks=None, colormap=None, axvlines=True, axvlines_kwds=None, sort_labels=False, **kwargs)
(1)导入数据

import pandas as pd
import matplotlib.pyplot as plt
from pandas.plotting import parallel_coordinates
# 解决中文不能正常显示的问题
plt.rcParams['font.sans-serif'] = ['SimHei']
# (1)导入数据
df_final = pd.read_csv("./diamonds_filter.csv")

(2)绘制平行坐标图

# (2)绘制平行坐标图
plt.figure(figsize=(8,6), dpi= 80)
parallel_coordinates(df_final, 'cut', colormap='Dark2')

(3)设置图形样式

# (3)设置边框
plt.gca().spines["top"].set_alpha(0)
plt.gca().spines["bottom"].set_alpha(.3)
plt.gca().spines["right"].set_alpha(0)
plt.gca().spines["left"].set_alpha(.3)
# (4)设置标题,网格,标签
plt.title('钻石的平行坐标图', fontsize=22)
plt.grid(alpha=0.3)
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
plt.show()

(4)结果展示
在这里插入图片描述

二、成对关系图
pairplot主要展现的是变量两两之间的关系
kind:用于控制非对角线上的图的类型,可选"scatter"与"reg"
diag_kind:控制对角线上的图的类型,可选"hist"与"kde"
(1)加载鸢尾花数据

import matplotlib.pyplot as plt
import seaborn as sns
# (1)数据准备
iris = sns.load_dataset('iris')
print(iris)

(2)用seaborn画成对关系

# (2)用 Seaborn 画成对关系
sns.pairplot(iris)
plt.show()

(3)结果展示

在这里插入图片描述

可以看到对角线上是各个属性的直方图(分布图),而非对角线上是两个不同属性之间的相关图,从图中我们发现,花瓣的长度和宽度之间以及萼片的长短和花瓣的长、宽之间具有比较明显的相关关系。
三、折线图
(1)导入肺病数据

import pandas as pd
import matplotlib.pyplot as plt
# 解决中文不能正常显示的问题
plt.rcParams['font.sans-serif'] = ['SimHei']
# (1) 导入数据
df = pd.read_csv('./data/mortality.csv')

(2)设置上下限以及标尺刻度

# (2)设置y轴上下限值以及标尺刻度间隔值
y_LL = 100  # y轴最小值
y_UL = int(df.iloc[:, 1:].max().max()*1.1) 
# y轴最大值,先求得每一列的最大值,再从所有最大值中取最大值
y_interval = 400  # y轴标尺刻度间隔

(3)绘制折线图

# (3)添加画布
fig, ax = plt.subplots(1,1,figsize=(16, 9), dpi= 80)
# (4)准备颜色
mycolors = ['tab:red', 'tab:blue', 'tab:green', 'tab:orange']
# (5) 针对mdeaths、fdeaths列数据依次绘制折线图
columns = df.columns[1:]  # 取出第二列以后的所有列名,即mdeaths、fdeaths
for i, column in enumerate(columns):
    plt.plot(df.date.values, df[column].values, lw=1.5, color=mycolors[i])
    plt.text(df.shape[0]+1, df[column].values[-1], column, fontsize=14, color=mycolors[i])

(4)美化图形样式

#(6)基于y轴,每隔400绘制一条间隔线
for y in range(y_LL, y_UL, y_interval):
    plt.hlines(y, xmin=0, xmax=71, colors='black', alpha=0.3, linestyles="--", lw=0.5)
    
# (7)设置x轴、y轴的刻度不显示
plt.tick_params(axis="both", which="both", bottom=False, top=False,
                labelbottom=True, left=False, right=False, labelleft=True)
# (8)设置边框
plt.gca().spines["top"].set_alpha(.3)
plt.gca().spines["bottom"].set_alpha(.3)
plt.gca().spines["right"].set_alpha(.3)
plt.gca().spines["left"].set_alpha(.3)
# (9)设置标题,x轴时间数据,y轴标尺刻度
plt.title('英国死于肺病的人数(1974-1979)', fontsize=22)
plt.yticks(range(y_LL, y_UL, y_interval), [str(y) for y in range(y_LL, y_UL, y_interval)], fontsize=12)
plt.xticks(range(0, df.shape[0], 12), df.date.values[::12], horizontalalignment='left', fontsize=12)
plt.ylim(y_LL, y_UL)
plt.xlim(-2, 80)
plt.show()

(5)结果展示
在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茶冻茶茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值