Python 如何用x和y分类轴绘制线图?

Python 如何用x和y分类轴绘制线图?,python,pandas,matplotlib,Python,Pandas,Matplotlib,我试图画一个比较两个分类变量的折线图。然而,我不断地遇到错误。我把我的代码放在下面: import matplotlib.pyplot as plt cat = ["bored", "happy", "bored", "bored", "happy", "bored"] dog = ["happy", "happy", "happy", "happy", "bored", "bored"] activity = ["combing", "drinking", "feeding", "nappi

我试图画一个比较两个分类变量的折线图。然而,我不断地遇到错误。我把我的代码放在下面:

import matplotlib.pyplot as plt

cat = ["bored", "happy", "bored", "bored", "happy", "bored"]
dog = ["happy", "happy", "happy", "happy", "bored", "bored"]
activity = ["combing", "drinking", "feeding", "napping", "playing", 
"washing"]

fig, ax = plt.subplots()
ax.plot(activity, dog, label="dog")
ax.plot(activity, cat, label="cat")
ax.legend()

plt.show()

这里提供一个答案:当使用matplotlib>=2.1运行时,问题中的代码

import matplotlib.pyplot as plt

cat = ["bored", "happy", "bored", "bored", "happy", "bored"]
dog = ["happy", "happy", "happy", "happy", "bored", "bored"]
activity = ["combing", "drinking", "feeding", "napping", "playing", 
"washing"]

fig, ax = plt.subplots()
ax.plot(activity, dog, label="dog")
ax.plot(activity, cat, label="cat")
ax.legend()

plt.show()
运行良好,生产效率高


对于matplotlib的早期版本,轴应为数字。因此,您需要将类别转换为数字,绘制它们,然后相应地设置标签

import numpy as np
import matplotlib.pyplot as plt

cat = ["bored", "happy", "bored", "bored", "happy", "bored"]
dog = ["happy", "happy", "happy", "happy", "bored", "bored"]
activity = ["combing", "drinking", "feeding", "napping", "playing", 
"washing"]

catu, cati = np.unique(cat, return_inverse=True)
dogu, dogi = np.unique(dog, return_inverse=True)

fig, ax = plt.subplots()
ax.plot(range(len(dog)), dogi, label="dog")
ax.plot(range(len(cat)), cati, label="cat")

ax.set_xticks(range(len(activity)))
ax.set_xticklabels(activity)

ax.set_yticks(range(len(catu)))
ax.set_yticklabels(catu)

ax.legend()
plt.show()

这里提供一个答案:当使用matplotlib>=2.1运行时,问题中的代码

import matplotlib.pyplot as plt

cat = ["bored", "happy", "bored", "bored", "happy", "bored"]
dog = ["happy", "happy", "happy", "happy", "bored", "bored"]
activity = ["combing", "drinking", "feeding", "napping", "playing", 
"washing"]

fig, ax = plt.subplots()
ax.plot(activity, dog, label="dog")
ax.plot(activity, cat, label="cat")
ax.legend()

plt.show()
运行良好,生产效率高


对于matplotlib的早期版本,轴应为数字。因此,您需要将类别转换为数字,绘制它们,然后相应地设置标签

import numpy as np
import matplotlib.pyplot as plt

cat = ["bored", "happy", "bored", "bored", "happy", "bored"]
dog = ["happy", "happy", "happy", "happy", "bored", "bored"]
activity = ["combing", "drinking", "feeding", "napping", "playing", 
"washing"]

catu, cati = np.unique(cat, return_inverse=True)
dogu, dogi = np.unique(dog, return_inverse=True)

fig, ax = plt.subplots()
ax.plot(range(len(dog)), dogi, label="dog")
ax.plot(range(len(cat)), cati, label="cat")

ax.set_xticks(range(len(activity)))
ax.set_xticklabels(activity)

ax.set_yticks(range(len(catu)))
ax.set_yticklabels(catu)

ax.legend()
plt.show()

如何绘制分类变量的折线图?问题中的代码在matplotlib 2.1中生成。如果使用早期版本,将无法打印字符串。如果遇到错误,您需要在问题中包含完整的错误回溯。谢谢,有没有一种方法可以在不安装2.1版的情况下完成?如何绘制分类变量的折线图?问题中的代码在matplotlib 2.1中生成。如果使用早期版本,将无法打印字符串。如果你遇到错误,你需要在问题中包含完整的错误回溯。谢谢,有没有办法不用安装2.1版就可以做到?谢谢,我很感激。我会记住的,以备将来参考。如前所述,你应该直接投票,而不是写“谢谢你”。谢谢你,我很感激。我会记住的,以备将来参考。如前所述,你应该直接投票,而不是写“谢谢你”。