美文网首页
增强散点图讲述完整的故事

增强散点图讲述完整的故事

作者: Python_Camp | 来源:发表于2022-04-11 16:20 被阅读0次

通过增强散点图讲述完整的故事

概述:随着需求场景的发展,散点图是最受欢迎的。它们很快揭示了两个(或更多)变量之间的关系。如果做得好,散点图可以快速向观众传达一个完整的故事。

心中的目标是让你的听众对自己说……
我们明白现在该做什么了……

理想情况下,您的散点图将在瞬间引发上述认识。本文将展示如何将您的可视化从简单的散点图转变为完整的故事。这是 Seaborn 版本。配套文章将在基本 Matplotlib 和 Stata 中显示相同的内容。

你的工作是帮助决定你的公司应该购买什么车辆,因为它希望扩大其公司车队。此外1978 年是我们有数据的年份。

我经常用作示例的三个数据集本文重点介绍了三个数据集,我将它们作为自己或他人的示例。这些数据告诉我们大约 74 辆车。

我们知道每辆车的品牌、价格、效率 (mpg) 和其他因素。

我们公司已经确定最低效率要求是每加仑 16 英里,但我们的最佳效率标准是每加仑 29 英里。分析任务是找到高于最佳效率标准的最具成本效益的车辆,同时重量也最大(将是最重型的)

入门
最容易查看的图是简单的散点图。在 Seaborn 的协助下,如下所示:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.read_stata(' http://www.stata-press.com/data/r15/auto2.dta' )
plt.figure() ax = sns.scatterplot(data=df,                      
x="weight", y="mpg",                      
color = '#060b3f') 
plt.show()
image.png

尺寸、比例、尺寸和标签
稍微修饰一下这种视觉效果的一些首要任务是:
更改尺寸(更水平以适合我们的目标 8.5 x 11 in page 报告。
指定将减少混乱的比例和刻度线。
添加细微的网格线以帮助读者将各个数据点与其在 y 轴上的位置联系起来。
并更新轴标签以提供更好的信息。

import numpy as np
plt.figure(figsize = (15,6)) 
ax = sns.scatterplot(data=df, 
                     x="weight", 
                     y="mpg", 
                     color = '#060b3f') 
ax.set(xlabel='Weight ( lbs).', ylabel='里程 (mpg).') 
ax.yaxis.grid(True, color = '#CCCCFF') 
plt.xticks(np.arange(2000, 6000, 1000)) 
plt.yticks(np .arange(10, 45, 10)) 
plt.show()
image.png

设置上下文(可选)
Seaborn 中的一个可用功能是能够设置您的上下文。上下文,粗略地说,指定了你打算展示你的视觉效果的地方。

例如,您可能希望将您的视觉效果放在论文、笔记本、会议演讲或海报中。
虽然很多人会认为这个是可选的,但我经常喜欢为海报设置上下文。对于任何上下文,我发现它最具可读性。

plt.figure(figsize = (15,6)) 
sns.set_context(context='poster') 
ax = sns.scatterplot(data=df, 
                     x="weight", 
                     y="mpg", 
                     color = '#060b3f' ) 
ax.yaxis.grid(True, color = '#CCCCFF') 
ax.set(xlabel='Weight (lbs).', ylabel='Mileage (mpg).') 
plt.xticks(np.arange(2000, 6000, 1000)) 
plt.yticks(np.arange(10, 45, 10)) 
plt.show()
image.png

添加参考线
这就是商店展示自己的地方。为了勾勒出我们故事的轮廓,我们可以在图形中添加一些额外的信息。我们可以添加与我们公司效率标准相关的信息。

这里sns.lineplot()让我们添加水平参考线,ax.text()让我们注释这些参考线。

plt.figure(figsize = (15,6)) 
sns.lineplot(data=df, x="weight", 
             y=[29]*len(df), color = 'green') 
ax = sns.scatterplot(data =df, 
                     x="weight", 
                     y="mpg", 
                     color = '#060b3f') 
sns.lineplot(data=df, x="weight", 
             y=[16]*len(df), color = ' red') 
ax.text(3200, 30, 
        '绿线表示最佳效率标准。', 
        color = 'green') 
ax.text(1800, 15, 
        '红线表示最低效率要求。', 
        color = 'red' ) 
ax.set(xlabel='重量(磅)。',
       ylabel='里程 (mpg).') 
ax.yaxis.grid(True,
              颜色 = '#CCCCFF') 
plt.xticks(np.arange(2000, 6000, 1000)) 
plt.yticks(np.arange(10, 45, 10)) 
plt.show()
image.png
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize = (15,6)) 
sns.lineplot(data=df, x="weight", 
             y=[29]*len(df), color='green') 
ax = sns.scatterplot(data =df, 
                     x="weight", 
                     y="mpg", 
                     color='#060b3f') 
sns.lineplot(data=df, x="weight", 
             y=[16]*len(df), color='red') 
ax.text(3600, 30, 
        '绿线表示最佳效率标准。', 
        color='green') 
ax.text(1800, 15, 
        '红线表示最低效率要求。', 
        color='red' ) 
ax.text(2250, 32.2, 
        '丰田卡罗拉 (31mpg 2200lbs)',
        color = 'green',size = '14')
ax.text(2250, 30.8, 
        '最优价格最低', 
        color = 'green', size = '14') 
ax.set(xlabel='Weight (lbs).', 
       ylabel='Mileage (mpg).' ) 
ax.plot(2200, 31, 
        'g', marker='$\\bigoplus$', markersize=15) 
ax.yaxis.grid(True, color = '#CCCCFF') 
plt.suptitle("The 'Best Value' For Fleet Purchases", 
             fontsize=20) 
plt.title("初步分析", 
          fontsize=15) 
plt.xticks(np.arange(2000, 6000, 1000)) 
plt.yticks(np.arange(10, 45, 10)) 
plt.show()
image.png

相关文章

网友评论

      本文标题:增强散点图讲述完整的故事

      本文链接:https://www.haomeiwen.com/subject/fxoisrtx.html