【问题标题】:TypeError: no numeric data to plot in horizontal bar [closed]TypeError:没有数值数据可以在水平条中绘制[关闭]
【发布时间】:2021-08-07 05:12:11
【问题描述】:

我有这个数据集

    Variable    Value
0   x1  0.001092
1   x2  0.000001
2   x3  0.002040
3   x4  0.000021
4   x5  0.000000

我要绘制水平条形图:

df.plot(x = "Variable", y="Value", kind="barh")

但我收到了错误

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-130-0c2ee6896cfe> in <module>
----> 1 df.plot(x = "Variable", y="Value", kind="barh")

~/opt/anaconda3/lib/python3.7/site-packages/pandas/plotting/_core.py in __call__(self, *args, **kwargs)
    953                     data.columns = label_name
    954 
--> 955         return plot_backend.plot(data, kind=kind, **kwargs)
    956 
    957     __call__.__doc__ = __doc__

~/opt/anaconda3/lib/python3.7/site-packages/pandas/plotting/_matplotlib/__init__.py in plot(data, kind, **kwargs)
     59             kwargs["ax"] = getattr(ax, "left_ax", ax)
     60     plot_obj = PLOT_CLASSES[kind](data, **kwargs)
---> 61     plot_obj.generate()
     62     plot_obj.draw()
     63     return plot_obj.result

~/opt/anaconda3/lib/python3.7/site-packages/pandas/plotting/_matplotlib/core.py in generate(self)
    276     def generate(self):
    277         self._args_adjust()
--> 278         self._compute_plot_data()
    279         self._setup_subplots()
    280         self._make_plot()
~/opt/anaconda3/lib/python3.7/site-packages/pandas/plotting/_matplotlib/core.py in _compute_plot_data(self)
    439         # no non-numeric frames or series allowed
    440         if is_empty:
--> 441             raise TypeError("no numeric data to plot")
    442 
    443         self.data = numeric_data.apply(self._convert_to_ndarray)

TypeError: no numeric data to plot

希望你能帮忙。

【问题讨论】:

  • Variable objectValue float64

标签: python pandas matplotlib visualization


【解决方案1】:

您的代码非常适合我。我原以为您的值列中有字符串,但显然情况并非如此。从下面的代码中复制并粘贴 dataframe-from-dictionary。如果你不能绘制它,那么你的环境有问题。

df = pd.DataFrame({'Variable': {0: 'x1', 1: 'x2', 2: 'x3', 3: 'x4', 4: 'x5'}, 'Value': {0: 0.001092, 1: 1e-06, 2: 0.00204, 3: 2.1e-05, 4: 0.0}})
df.plot(x = "Variable", y="Value", kind="barh")
plt.show()

【讨论】:

    【解决方案2】:

    df.dtypes 是什么样的? (我忽略了第一个答案中的 kind='barh' 参数,对不起)

    (我知道这应该是评论而不是答案,但我还没有足够的声誉发表评论)

    编辑(原始答案):

    您正在尝试绘制“变量”列,该列似乎包含字符串而不是数字数据。 plot() 函数的 x 参数需要数字数据)

    【讨论】:

    • 谢谢,jrbergen。我交换了两个变量,它起作用了。没关系,jrbergen。我唯一建议的就是添加一个解释(就像你之前所做的那样)和解决方案(只是交换 x 和 y)
    • 不客气,但这很奇怪,因为根据documentation,我应该错了
    • 您不必将 x 和 y 交换为水平条形图。你的环境有问题。
    • @LdM 可以更改所选答案吗?我的是错误的。
    猜你喜欢
    • 2018-08-28
    • 2021-10-09
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    相关资源
    最近更新 更多