【问题标题】:How to plot colors for two variables in scatterplot in python?如何在 python 的散点图中绘制两个变量的颜色?
【发布时间】:2023-02-18 19:45:53
【问题描述】:

我有一个包含两个不同变量的数据集,我想给每个变量赋予不同的颜色,有人可以帮忙吗?链接到我的数据集:“https://github.com/mayuripandey/Data-Analysis/blob/main/word.csv”

import matplotlib.pyplot as plt
import pandas as pd



fig, ax = plt.subplots(figsize=(10, 6))

ax.scatter(x = df['Friends Network-metrics'], y = df['Number of Followers'],cmap = "magma")
plt.xlabel("Friends Network-metrics")
plt.ylabel("Number of Followers")
plt.show()

【问题讨论】:

  • 给 df 的一个小样本。
  • 哪一列是您要着色的变量?
  • 这是一个二维散点图。 x 和 y 定义一个点。单个点的颜色不能超过 1 种。你想让 x 和 y 显示不同的颜色是什么意思?
  • 不过,我添加了一个解决方案来为您提供一些选择。我想您正在寻找类似于下面最后两张图片的内容。

标签: python matplotlib jupyter-notebook scatter-plot


【解决方案1】:

不是很清楚你想在这里做什么。但我会提供一个可能对您有所帮助的解决方案。

可以使用 seaborn 来实现变量的颜色。否则,您需要遍历这些点来设置颜色。或者创建一个新列,有条件地为值输入颜色。

我不知道你的变量是什么,但你只是想把它放在 hue 参数中:

import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

df = pd.read_csv('https://raw.githubusercontent.com/mayuripandey/Data-Analysis/main/word.csv')

# Use the 'hue' argument to provide a factor variable
sns.lmplot(x='Friends Network-metrics', 
           y='Number of Followers', 
           height=8,
           aspect=.8,
           data=df, 
           fit_reg=False, 
           hue='Sentiment', 
           legend=True)

plt.xlabel("Friends Network-metrics")
plt.ylabel("Number of Followers")
 
plt.show()

这可以为您提供如下视图:

不过,如果您正在寻找其中一个变量的色标,则可以执行以下操作。然而,最大值太大以至于范围也不能使它成为真正有效的视觉效果:

import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv('https://raw.githubusercontent.com/mayuripandey/Data-Analysis/main/word.csv')

fig, ax = plt.subplots(figsize=(10, 6))
g = ax.scatter(x = df['Friends Network-metrics'], 
               y = df['Number of Followers'],
               c = df['Friends Network-metrics'],
               cmap = "magma")
fig.colorbar(g)

plt.xlabel("Friends Network-metrics")
plt.ylabel("Number of Followers")
 
plt.show()

所以你可以调整比例(我还会添加 edgecolors = 'black' 因为它很难看到光图):

import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv('https://raw.githubusercontent.com/mayuripandey/Data-Analysis/main/word.csv')

fig, ax = plt.subplots(figsize=(10, 6))
g = ax.scatter(x = df['Friends Network-metrics'], 
               y = df['Number of Followers'],
               c = df['Friends Network-metrics'],
               cmap = "magma",
               vmin=0, vmax=10000,
               edgecolors = 'black')
fig.colorbar(g)

plt.xlabel("Friends Network-metrics")
plt.ylabel("Number of Followers")
 
plt.show()

【讨论】:

    【解决方案2】:

    谢谢你!这对我也有很大帮助。有没有办法做到这一点,并为依赖于另一个变量的数据点设置不同的标记?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多