【问题标题】:Scatterplot in matplotlib [closed]matplotlib中的散点图[关闭]
【发布时间】:2017-06-07 09:48:09
【问题描述】:

我正在尝试使用 matplotlib 散点图绘制字符串与整数。

我的数据集如下所示:

      Name               Utilisation
      manhit                  10
      movers                  9
      mayer                 9
      fabcom                8
      freshimp              7

我尝试使用以下代码(参考之前的一篇文章),但由于某种原因它不起作用:

    import matplotlib.pyplot as plt
    from matplotlib.ticker import FuncFormatter, MultipleLocator
    import numpy as np

    x_data = np.array(dftail.Utilisation)
    print x_data
    y_data = np.array(dftail.Name)
    print y_data

    def ord_to_char(v, p=None):
        return chr(int(v))

    fig, ax = plt.subplots()
    ax.plot(x_data, y_data, 'x')
    ax.xaxis.set_major_formatter(FuncFormatter(ord_to_char))
    ax.xaxis.set_major_locator(MultipleLocator(1))
    plt.show()

如果有任何建议,我将不胜感激。非常感谢。

【问题讨论】:

  • 散点图是一种显示两个数字变量之间关系的方法,或者至少是可以排序并与实数值相关联的变量。为什么要尝试一个变量是字符串的散点图?条形图会更有意义。
  • “它不起作用”不足以描述您的问题。
  • @RoryDaulton:这是因为我想看看有多少名称具有不同的利用率级别。这就是我选择散点图的原因。
  • 散点图有连续的轴。你不能把分类变量放在那里。
  • 为什么不使用条形图?

标签: python matplotlib


【解决方案1】:

您不能将分类值直接用于绘图。相反,您可以绘制一个升序数字列表,然后将刻度标签设置为列表中的名称。

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

dftail = pd.DataFrame(
        {"Name": ["manhit", "movers", "mayer", "fabcom", "freshimp"], 
        "Utilisation": [10,9,9,8,7]})

x_data = np.arange(len(dftail))
y_data = np.array(dftail.Utilisation)


fig, ax = plt.subplots()
ax.plot(x_data, y_data, 'bo')
ax.set_xticks(x_data)
ax.set_xticklabels(dftail.Name)
plt.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-22
    • 1970-01-01
    • 2010-09-17
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    相关资源
    最近更新 更多