【问题标题】:plt.scatter() plots behaving like plt.plot() plots in Matplotlibplt.scatter() 图的行为类似于 Matplotlib 中的 plt.plot() 图
【发布时间】:2021-03-21 11:22:55
【问题描述】:

我正在尝试将世界各国的人均 GDP 与每个国家的 COVID-19 死亡总数进行比较。每次我尝试将其转换为散点图时,它都会显示与使用 plt.plot() 命令显示的相同的图。这是我的代码:

import pandas as pd
from matplotlib import pyplot as plt
plt.style.use('seaborn-whitegrid')
data = pd.read_csv(r'/Users/john.smith/covid-data.csv')

gdp = data["gdp_per_capita"]
deaths = data["total_deaths"]

plt.scatter(gdp, deaths)
plt.title('GDP-per-Capita Compared to COVID-19 Death Total')
plt.xlabel('GDP-per-Capita')
plt.ylabel('Confirmed Deaths')

plt.tight_layout()
plt.show()

运行此代码时,会生成以下图表。这显然不是我想要得到的散点图,值得注意的是,当我使用plt.scatter() 命令时,唯一改变的是图上的点变得非常大。

我完全在不同的文件上运行了整个 Matplotlib 模块的测试。当我使用普通变量而不从 CSV 文件导入时,如下所示:

x = [7, 3, 8, 3]
y = [1, 5, 7, 4]
plt.scatter(x, y)

然后代码可以正常工作并生成散点图。我已经在网上挖掘了几个小时以尝试找到解决方案,并尝试使用其他导入 CSV 或创建散点图的方法,但没有任何效果。感谢您提供任何提示。

【问题讨论】:

  • 这在我看来就像一个散点图,其中的点以某种方式重叠,使其看起来像一个条形图。一种检查方法是将 xlim 和 ylim 设置为放大一小部分,看看您是否确实看到了很多点或一个条形
  • @G.Anderson 你是对的,谢谢!我对这些命令并不明智,但我放大了 (10000, 2000),它证实了你的想法。

标签: python matplotlib plot


【解决方案1】:

答案由上述 cmets 中的G. Anderson 提供。

事实证明,我只是没有使用 xlim()ylim() 命令的经验,因此散点图中的各个点在垂直线上非常紧密地重叠。发生这种情况的原因仅仅是因为原始视图窗口对于这么大的数据集来说太宽了。

我做了一些额外的研究,尝试将两个图放在一个图形上,其中一个被放大,这是代码:

figs, axs = plt.subplots(2)
figs.suptitle('GDP-per-Capita Compared to COVID-19 Death Total')
axs[0].scatter(gdp, deaths)
axs[1].scatter(gdp, deaths)
plt.axis([10000, 20000, 10000, 20000])

这产生了一些我可以使用的好图:

我将研究如何使这两个图更具可读性。

【讨论】:

  • 重叠点的方式使数据看起来像是预先分箱的。您还可以考虑其他绘图类型,因为散点图可能没有那么丰富的信息。条形图、直方图、盒须图或小提琴图可能会为您提供更多信息或用​​数据讲述更好的故事
  • 也就是说,您的数据在散点图中沿垂直线分布。分散数据自然落入这样的一系列行中是非常不寻常的。由于数据的收集或​​报告方式,数据中可能存在潜在模式(这对于 GDP 等在某些应用程序中更经常近似或四舍五入的事物很常见)。这可能会使您的散点图看起来更像直方图(x 18000 gdp 类别中的国家数量等)。总是值得看看其他情节类型,看看什么是最有意义的
  • @G.Anderson 哦,我明白你的意思了。查看我的数据后,数字非常精确,但有这么多点(每个国家多于一个)的原因是我有每个国家的大约 340 个 GDP 和死亡数据条目(每个国家的每一天一个2020)。我将更多地研究使用 pandas 模块来尝试仅选择每个国家/地区的最近日期并仅绘制这些日期。非常感谢您的帮助。
  • 乐于助人!这看起来是探索性数据分析的一个很好的练习
  • 别忘了,您可以用绿色复选标记接受您自己的答案,将问题标记为已解决
猜你喜欢
  • 2020-03-04
  • 1970-01-01
  • 2020-08-07
  • 2016-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-30
  • 1970-01-01
相关资源
最近更新 更多