50个数据可视化最有价值的图表(附完整Python代码,建议收藏)(下)

欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定!

对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。

作者:lemonbit

微信公众号:Python数据之道

3901436-37e3969694bd6863
3901436-1dea4b1f66192830

from Unsplash by @Mike Enerio


翻译 | Lemon

来源 | Machine Learning Plus

23 直方密度线图 (Density Curves with Histogram)

带有直方图的密度曲线汇集了两个图所传达的集体信息,因此您可以将它们放在一个图中而不是两个图中。

 
 
  1. # Import Data

  2. df = pd.read_csv("https://github.com/selva86/datasets/raw/master/mpg_ggplot2.csv")


  3. # Draw Plot

  4. plt.figure(figsize=(13,10), dpi= 80)

  5. sns.distplot(df.loc[df['class'] == 'compact', "cty"], color="dodgerblue", label="Compact", hist_kws={'alpha':.7}, kde_kws={'linewidth':3})

  6. sns.distplot(df.loc[df['class'] == 'suv', "cty"], color="orange", label="SUV", hist_kws={'alpha':.7}, kde_kws={'linewidth':3})

  7. sns.distplot(df.loc[df['class'] == 'minivan', "cty"], color="g", label="minivan", hist_kws={'alpha':.7}, kde_kws={'linewidth':3})

  8. plt.ylim(0, 0.35)


  9. # Decoration

  10. plt.title('Density Plot of City Mileage by Vehicle Type', fontsize=22)

  11. plt.legend()

  12. plt.show()

3901436-cc12ba0bc1d25e99

图23

24 Joy Plot

Joy Plot允许不同组的密度曲线重叠,这是一种可视化大量分组数据的彼此关系分布的好方法。 它看起来很悦目,并清楚地传达了正确的信息。 它可以使用基于 matplotlib 的 joypy 包轻松构建。 (『Python数据之道』注:需要安装 joypy 库)

 
 
  1. # !pip install joypy

  2. # Python数据之道 备注

  3. import joypy


  4. # Import Data

  5. mpg = pd.read_csv("https://github.com/selva86/datasets/raw/master/mpg_ggplot2.csv")


  6. # Draw Plot

  7. plt.figure(figsize=(16,10), dpi= 80)

  8. fig, axes = joypy.joyplot(mpg, column=['hwy', 'cty'], by="class", ylim='own', figsize=(14,10))


  9. # Decoration

  10. plt.title('Joy Plot of City and Highway Mileage by Class', fontsize=22)

  11. plt.show()

3901436-ca1532e9edf6c321

图24

25 分布式包点图 (Distributed Dot Plot)

分布式包点图显示按组分割的点的单变量分布。 点数越暗,该区域的数据点集中度越高。 通过对中位数进行不同着色,组的真实定位立即变得明显。

3901436-bc7cf7afdc3300bb

图25

26 箱形图 (Box Plot)

箱形图是一种可视化分布的好方法,记住中位数、第25个第45个四分位数和异常值。 但是,您需要注意解释可能会扭曲该组中包含的点数的框的大小。 因此,手动提供每个框中的观察数量可以帮助克服这个缺点。

例如,左边的前两个框具有相同大小的框,即使它们的值分别是5和47。 因此,写入该组中的观察数量是必要的。

 
 
  1. # Import Data

  2. df = pd.read_csv("https://github.com/selva86/datasets/raw/master/mpg_ggplot2.csv")


  3. # Draw Plot

  4. plt.figure(figsize=(13,10), dpi= 80)

  5. sns.boxplot(x='class', y='hwy', data=df, notch=False)


  6. # Add N Obs inside boxplot (optional)

  7. def add_n_obs(df,group_col,y):

  8.    medians_dict = {grp[0]:grp[1][y].median() for grp in df.groupby(group_col)}

  9.    xticklabels = [x.get_text() for x in plt.gca().get_xticklabels()]

  10.    n_obs = df.groupby(group_col)[y].size().values

  11.    for (x, xticklabel), n_ob in zip(enumerate(xticklabels), n_obs):

  12.        plt.text(x, medians_dict[xticklabel]*1.01, "#obs : "+str(n_ob), horizontalalignment='center', fontdict={'size':14}, color='white')


  13. add_n_obs(df,group_col='class',y='hwy')    


  14. # Decoration

  15. plt.title('Box Plot of Highway Mileage by Vehicle Class', fontsize=22)

  16. plt.ylim(10, 40)

  17. plt.show()

3901436-de7c93a2eb21cf5a

图26

27 包点+箱形图 (Dot + Box Plot)

包点+箱形图 (Dot + Box Plot)传达类似于分组的箱形图信息。 此外,这些点可以了解每组中有多少数据点。

 
 
  1. # Import Data

  2. df = pd.read_csv("https://github.com/selva86/datasets/raw/master/mpg_ggplot2.csv")


  3. # Draw Plot

  4. plt.figure(figsize=(13,10), dpi= 80)

  5. sns.boxplot(x='class', y='hwy', data=df, hue='cyl')

  6. sns.stripplot(x='class', y='hwy', data=df, color='black', size=3, jitter=1)


  7. for i in range(len(df['class'].unique())-1):

  8.    plt.vlines(i+.5, 10, 45, linestyles='solid', colors='gray', alpha=0.2)


  9. # Decoration

  10. plt.title('Box Plot of Highway Mileage by Vehicle Class', fontsize=22)

  11. plt.legend(title='Cylinders')

  12. plt.show()

3901436-ef165f4a6ae0a4e3

图27

28 小提琴图 (Violin Plot)

小提琴图是箱形图在视觉上令人愉悦的替代品。 小提琴的形状或面积取决于它所持有的观察次数。 但是,小提琴图可能更难以阅读,并且在专业设置中不常用。

 
 
  1. # Import Data

  2. df = pd.read_csv("https://github.com/selva86/datasets/raw/master/mpg_ggplot2.csv")


  3. # Draw Plot

  4. plt.figure(figsize=(13,10), dpi= 80)

  5. sns.violinplot(x='class', y='hwy', data=df, scale='width', inner='quartile')


  6. # Decoration

  7. plt.title('Violin Plo

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值