山峦(山脊线)图,英文名叫Ridge plot ,看上去真得很像山的脊背⛰,还有一个好听的名字Joy Plots,因为Joy Division乐队在一张专辑封面上采用了这种图形。

她是一种沿 x 轴绘制多个山峦状的曲线图形(统计上叫做概率密度或核密度分布曲线),其峰的高度代表概率,峰越高,代表该数值发生的次数最多。

这种图可以用来比较一个变量(或多个)在不同组中的分布情况,比如历年月份的气温,不同时间的退单量,NBA历年的三分球命中率等等。

图表解释:

Netflix不同语言的电影在 IMDB 的评分,最直观的观图印象就是,English 英语电影的评分分布集中在中间,5-8分最多,而 Spanish 西班牙语的电影整体偏右,高分电影比较多。

实现过程:

1. 准备数据:读取本地 excel 数据,筛选需要的数据,绘制此类图需要至少一列数值(评分),一列类别(语种)

2. 绘制图形:使用 python joyplot 包绘制,其底层依然是使用matplotlib 库实现绘制,传入数据,指定两轴的列,调整其他元素参数即可。可以看到很多元素设置依然是mat里的方法(上色,加标题,保存)

# 导入需要的库

from joypy import joyplot

import pandas as pd

import seaborn as sns

import matplotlib.pyplot as plt

# 01. 准备数据

df = pd.read_excel('NetflixOriginals.xlsx',header=1)

# 筛选数据,选择语言类型,需要的数据列

languages = ['English', 'Hindi', 'Spanish', 'French', 'Italian', 'Portuguese']

df_filtered = df[df['Language'].isin(languages)]

df_filtered = df_filtered[['Title','IMDB Score','Language']]

# 02. 绘制图形 - 使用joyplot库

fig,ax = joyplot(df_filtered, by='Language', column='IMDB Score', figsize= (10,12),

#传入数据,y轴,x轴,设置图片尺寸

linecolor="white",# 山脊线的颜色

colormap=sns.color_palette("coolwarm", as_cmap=True),

#设置山脊图的填充色,用seaborn库的色盘,选择离散型颜色,as_cmap参数用来更改显示的颜色范围是离散的还是连续的

background = '#eae0d5');

# 设置背景色

fig.set_facecolor('#eae0d5') #设置画布背景色

plt.xlabel('IMDB Score');#添加x轴名称

plt.title("Netflix Originals - IMDB Scores by Language");#添加标题

plt.subplots_adjust(top=0.95,bottom=0.1) # 调整图形距离边框位置

plt.savefig('joyplot_coolwarm.png',dpi=300) #保存图片,设置高清晰度

# 版本2 - Set2 色盘,可爱风

fig,ax = joyplot(df_filtered, by='Language', column='IMDB Score', figsize= (10,12),

colormap=sns.color_palette("Set2", as_cmap=True),linecolor="white", background = '#eae0d5')

fig.set_facecolor('#eae0d5')

plt.xlabel('IMDB Score');

plt.title("Netflix Originals - IMDB Scores by Language");

plt.subplots_adjust(top=0.95,bottom=0.1)

plt.savefig('joyplot.png',dpi=300)

更多山峦图,饱你眼福~

如此美丽惊艳的数据图形,你还不快来试试!

评论取代码和数据,必回

#Python #数据可视化 #编程 #设计 #记录生活 #matplotlib

精彩链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: