【问题标题】:Scatter plot density in python from data in csvpython中的散点图密度来自csv中的数据
【发布时间】:2019-04-16 10:43:59
【问题描述】:

我有一个非常庞大的数据集,包含 18000 名玩家。例如,每个玩家都有一个整体和完成功能,我想制作散点密度图,因为使用“正常”图我不能在哪里有更多的玩家,哪里是更少的玩家。

正常的散点图代码如下所示...

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

DATA_LOCATION = "main_players.csv"
FIRST_ATTRIBUTE = "Finishing"
SECOND_ATTRIBUTE = "Overall"

datas = pd.read_csv(DATA_LOCATION)
x = datas[[FIRST_ATTRIBUTE]]
y = datas[[SECOND_ATTRIBUTE]]
plt.scatter(x, y, color='r')
plt.xlabel('Finishing')
plt.ylabel('Overall')
plt.title('Odnos overall i finishinga')

plt.show()

我在 Internet 上查找并找到了执行以下操作的代码:

# libraries
import matplotlib.pyplot as plt
import numpy as np

# create data
x = np.random.normal(size=50000)
y = x * 3 + np.random.normal(size=50000)

# Big bins
plt.hist2d(x, y, bins=(50, 50), cmap=plt.cm.jet)
#plt.show()

# Small bins
plt.hist2d(x, y, bins=(300, 300), cmap=plt.cm.jet)
#plt.show()

# If you do not set the same values for X and Y, the bins aren't square !
plt.hist2d(x, y, bins=(300, 30), cmap=plt.cm.jet)

#plt.show()

我只用我的 x 和 y 替换它们 x,但它不起作用。

我希望输出(密度图)如下所示:

【问题讨论】:

  • 您的散点图现在看起来如何?没有数据,我们无法重现当前行为广告,看看它与预期结果有何不同。
  • @alec_djinn 这不是这个问题的重复。 OP 需要绘制 (x, y) 对的 2D 直方图。您提到的问题是关于使用imshow 绘制 (x, y, z) 图像。
  • OP,你能展示一下你使用hist2d函数的尝试吗?
  • @Keldorn OP 建议的输出看起来像是答案之一给出的解决方案。它是使用 plt.pcolormesh 获得的

标签: python scatter-plot data-analysis density-plot


【解决方案1】:

使用列名列表查询数据框,例如在您的代码中:

x = datas[[FIRST_ATTRIBUTE]]
y = datas[[SECOND_ATTRIBUTE]]

产生 pd.Dataframes,plt.hist2d 无法处理

尝试:

x = datas[FIRST_ATTRIBUTE]
y = datas[SECOND_ATTRIBUTE]

获取 pd.Series。这些你应该可以用 plt.hist2d 绘制

【讨论】:

    猜你喜欢
    • 2020-10-07
    • 1970-01-01
    • 2019-09-02
    • 2015-09-12
    • 2020-01-19
    • 2022-06-14
    • 2014-01-27
    • 1970-01-01
    相关资源
    最近更新 更多