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

这篇博客汇总了使用Matplotlib和Seaborn进行数据分析可视化的50个关键图表,包括散点图、气泡图、相关图、发散型条形图等多种图表,帮助读者理解和展示数据关系、偏差、排序和分布。文章分为关联、偏差、排序和分布四个部分,提供了详细代码示例,适合数据可视化学习者和实践者。
摘要由CSDN通过智能技术生成

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

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

作者:lemonbit

微信公众号:Python数据之道

3901436-086ba8ce72802530
3901436-e6271a50ed0d98ed

from Unsplash by @Mike Enerio


翻译 | Lemon

来源 | Machine Learning Plus



本文总结了 Matplotlib 以及 Seaborn 用的最多的50个图形,掌握这些图形的绘制,对于数据分析的可视化有莫大的作用,强烈推荐大家阅读后续内容。

如果觉得内容不错,欢迎分享到您的朋友圈。

Tips: 

(1)本文原文部分代码有不准确的地方,已进行修改; 

(2)所有正确的源代码,我已整合到 jupyter notebook 文件中,可以在公众号『Python数据之道』后台回复 “code”,可获得本文源代码; 

(3)运行本文代码,除了安装 matplotlib 和 seaborn 可视化库外,还需要安装其他的一些辅助可视化库,已在代码部分作标注,具体内容请查看下面文章内容。

(4)由于微信文章总字数不能超过5万字,删除了部分代码,完整的文章请点击文章底部的阅读原文


在数据分析和可视化中最有用的 50 个 Matplotlib 图表。 这些图表列表允许您使用 python 的 matplotlib 和 seaborn 库选择要显示的可视化对象。

介绍

这些图表根据可视化目标的7个不同情景进行分组。 例如,如果要想象两个变量之间的关系,请查看“关联”部分下的图表。 或者,如果您想要显示值如何随时间变化,请查看“变化”部分,依此类推。

有效图表的重要特征:

在不歪曲事实的情况下传达正确和必要的信息。

设计简单,您不必太费力就能理解它。

从审美角度支持信息而不是掩盖信息。

信息没有超负荷。

准备工作

在代码运行前先引入下面的设置内容。 当然,单独的图表,可以重新设置显示要素。

 
 
  1. # !pip install brewer2mpl

  2. import numpy as np

  3. import pandas as pd

  4. import matplotlib as mpl

  5. import matplotlib.pyplot as plt

  6. import seaborn as sns

  7. import warnings; warnings.filterwarnings(action='once')


  8. large = 22; med = 16; small = 12

  9. params = {'axes.titlesize': large,

  10.          'legend.fontsize': med,

  11.          'figure.figsize': (16, 10),

  12.          'axes.labelsize': med,

  13.          'axes.titlesize': med,

  14.          'xtick.labelsize': med,

  15.          'ytick.labelsize': med,

  16.          'figure.titlesize': large}

  17. plt.rcParams.update(params)

  18. plt.style.use('seaborn-whitegrid')

  19. sns.set_style("white")

  20. %matplotlib inline


  21. # Version

  22. print(mpl.__version__)  #> 3.0.0

  23. print(sns.__version__)  #> 0.9.0

 
 
  1. 3.0.2

  2. 0.9.0

一、关联 (Correlation)

关联图表用于可视化2个或更多变量之间的关系。 也就是说,一个变量如何相对于另一个变化。

1 散点图(Scatter plot)

散点图是用于研究两个变量之间关系的经典的和基本的图表。 如果数据中有多个组,则可能需要以不同颜色可视化每个组。 在 matplotlib 中,您可以使用 plt.scatterplot() 方便地执行此操作。

 
 
  1. # Import dataset

  2. midwest = pd.read_csv("https://raw.githubusercontent.com/selva86/datasets/master/midwest_filter.csv")


  3. # Prepare Data

  4. # Create as many colors as there are unique midwest['category']

  5. categories = np.unique(midwest['category'])

  6. colors = [plt.cm.tab10(i/float(len(categories)-1)) for i in range(len(categories))]


  7. # Draw Plot for Each Category

  8. plt.figure(figsize=(16, 10), dpi= 80, facecolor='w', edgecolor='k')


  9. for i, category in enumerate(categories):

  10.    plt.scatter('area', 'poptotal',

  11.                data=midwest.loc[midwest.category==category, :],

  12.                s=20, cmap=colors[i], label=str(category))

  13.    # "c=" 修改为 "cmap=",Python数据之道 备注


  14. # Decorations

  15. plt.gca().set(xlim=(0.0, 0.1), ylim=(0, 90000),

  16.              xlabel='Area', ylabel='Population')


  17. plt.xticks(fontsize=12); plt.yticks(fontsize=12)

  18. plt.title("Scatterplot of Midwest Area vs Population", fontsize=22)

  19. plt.legend(fontsize=12)    

  20. plt.show()    

3901436-4ff7829b6b10c8d4

图1

2 带边界的气泡图(Bubble plot with Encircling)

有时,您希望在边界内显示一组点以强调其重要性。 在这个例子中,你从数据框中获取记录,并用下面代码中描述的 encircle() 来使边界显示出来。

 
 
  1. from matplotlib import patches

  2. from scipy.spatial import ConvexHull

  3. import warnings; warnings.simplefilter('ignore')

  4. sns.set_style("white")


  5. # Step 1: Prepare Data

  6. midwest = pd.read_csv("https://raw.githubusercontent.com/selva86/datasets/master/midwest_filter.csv")


  7. # As many colors as there are unique midwest['category']

  8. categories = np.unique(midwest['category'])

  9. colors = [plt.cm.tab10(i/float(len(categories)-1)) for i in range(len(categories))]


  10. # Step 2: Draw Scatterplot with unique color for each category

  11. fig = plt.figure(figsize=(16, 10), dpi= 80, facecolor='w', edgecolor='k')    


  12. for i, category in enumerate(categories):

  13.    plt.scatter('area', 'poptotal', data=midwest.loc[midwest.category==category, :],

  14.                s='dot_size', cmap=colors[i], label=str(category), edgecolors='black', linewidths=.5)

  15.    # "c=" 修改为 "cmap=",Python数据之道 备注


  16. # Step 3: Encircling

  17. # https://stackoverflow.com/questions/44575681/how-do-i-encircle-different-data-sets-in-scatter-plot

  18. def encircle(x,y, ax=None, **kw):

  19.    if not ax: ax=plt.gca()

  20.    p = np.c_[x,y]

  21.    hull =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值