重新排序x和x'列表以在相同的图中共享相同的x轴

时间:2018-02-08 13:31:41

标签: python sorting matplotlib

我想在同一个图中标注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。 然而,我得到一个无序的情节enter image description here

所以我做了以下重新排序标签。

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')

0 个答案:

没有答案