山峦(山脊线)图,英文名叫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