用10行Python代码画了一张惊艳的山峦图

 

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

评论 63
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值