【问题标题】:Python error: generating a scatter plot using matplotlibPython 错误:使用 matplotlib 生成散点图
【发布时间】:2018-05-17 20:35:57
【问题描述】:

我是一个 python 新手,患有如何在 matplotlib.pyplot 中导入 CSV 文件 我想看看小时(=人们花多少小时玩电子游戏)和级别(=游戏级别)之间的关系。然后我想在女性(1)和男性(0)之间用不同颜色的税绘制散点图。所以,我的 x 将是“小时”,我的 y 将是“水平”。

我的数据 csv 文件如下所示:

          hour gender level
0            8    1   20.00
1            9    1   24.95
2           12    0   10.67
3           12    0   18.00
4           12    0   17.50
5           13    0   13.07
6           10    0   14.45
...
...
499         12    1  19.47
500         16    0  13.28

这是我的代码:

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

df=pd.read_csv('data.csv')
plt.plot(x,y, lavel='some relationship')
plt.title("Some relationship")
plt.xlabel('hour')
plt.ylabel('level')
plt.plot[gender(gender=1), '-b', label=female]
plt.plot[gender(gender=0), 'gD', label=male]
plt.axs()
plt.show()

我想画下图。所以,会有男女两行。

y=level|           @----->male
       | @
       | *         *----->female
       |________________ x=hour

但是,我不确定如何解决这个问题。 我不断收到错误 NameError: name 'hour' is not defined。

【问题讨论】:

  • 您可能忘记了hour 周围的逗号,因此Python 正在寻找一个名为hour 的变量,而不是将其解释为字符串
  • 你需要注意python的语法。 [( 不同。
  • @maxou 谢谢,我不知道在哪里输入逗号
  • @ImportanceOfBeingErnest 是的!好东西知道。谢谢。

标签: python csv matplotlib scatter-plot


【解决方案1】:

可以这样做:

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

df = pd.DataFrame(data={"hour": [8,9,12,12,12,13,10], 
                        "gender": [1,1,0,0,0,0,0],
                        "level": [20, 24.95, 10.67, 18, 17.5, 13.07, 14.45]})

df.sort_values("hour", ascending=True, inplace=True)

fig = plt.figure(dpi=80)
ax = fig.add_subplot(111, aspect='equal')

ax.plot(df.hour[df.gender==1], df.level[df.gender==1], c="red", label="male")
ax.plot(df.hour[df.gender==0], df.level[df.gender==0], c="blue", label="female")
plt.xlabel('hour')
plt.ylabel('level')

【讨论】:

  • 谢谢,但每个变量的数量将是 500 而不仅仅是 7。我想从我的 csv 文件中加载变量。
  • @user 加载它然后执行我的答案中的所有步骤有什么问题?您只需将 df = pd.DataFrame(data... 替换为 df=pd.read_csv('data.csv')
  • 是的,我做到了,但是错误消息说“NameError: name 'hour' is not defined。”
  • 回溯(最近一次通话最后):ax.plot(df.hour[df.gender==1], df.level[df.gender==1], c="red", getattr 中的 label="male") 返回 object.__getattribute__(self, name) AttributeError: 'DataFrame' object has no attribute 'hour'
  • 如你所说,我只是将 df=pd.DataFrame(data...) 替换为 df=pd.read_csv("data.csv")
猜你喜欢
  • 2021-04-15
  • 2020-08-27
  • 1970-01-01
  • 1970-01-01
  • 2018-06-23
  • 2011-01-23
  • 1970-01-01
  • 2016-06-14
相关资源
最近更新 更多