我想在同一个图中标注labels_train和labels_test分布在同一个图中。我有101个类(字符串)在x轴上被shonwn。由于有字符串,我得到以下错误:
ValueError: could not convert string to float: 'sitdown'
在以下行代码中:
ax1.plot(labels, values, label=' train classes')
这是我的代码:
import matplotlib.pyplot as plt
from collections import Counter
def make_plot(train_labels,test_labels):
labels2, values2 = zip(*Counter(test_labels).items())
print("labels ", labels2)
print("lvalues", values2)
labels, values = zip(*Counter(train_labels).items())
print("labels ", labels)
print("lvalues", values)
fig1, ax1 = plt.subplots()
ax1.plot(labels, values, label=' train classes')
ax1.plot(labels2, values2, label=' test classes')
ax1.set_xlabel("classes")
ax1.set_ylabel("number of examples")
ax1.set_title("data distibution")
ax1.legend(loc='best')
fig1.show()
修改
l更新了我的conda环境,以获得@ ImportanceOfBeingErnest建议的matplotlib 2.1。 然而,我得到一个无序的情节
所以我做了以下重新排序标签。
lists = sorted(zip(*[labels2, values2]))
labels2, values2 = list(zip(*lists))
lists2 = sorted(zip(*[labels, values]))
labels2, values2 = list(zip(*lists2))
labels=['Typing', 'Surfing', 'CricketBowling', 'JugglingBalls', 'BoxingSpeedBag',...]
lvalues=[46, 38, 39, 34, 40,...]
labels2=['Rafting', 'Punch', 'ApplyEyeMakeup', 'JumpRope', 'PlayingDhol',...]
lvalues2=[78, 112, 106, 105, 116,...]
但仍然没有意义。 我需要获得相同的标签顺序以在两个图之间共享x轴。
ax1.plot()中的rotation ='vertical'不在
中接受plt.xticks(rotation='vertical')