还有其他方法我可以选择不对x标签进行排序

时间:2018-03-13 22:40:07

标签: python matplotlib plot

我知道一种不对x标签进行排序的方法是使用set_xticklabels,但我想知道是否有另一种方法可以解决问题。我的意思是,除了使用set_xticklabels之外,我怎么能不对x标签进行排序?

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    import random
    url="https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data"
    df = pd.read_csv(url,header=None,names=['age', 'workclass', 'fnlwgt', 'education', 'education-num', 'marital-status', 'occupation', 'relationship', 'race', 'sex', 'capital-gain', 'capital-loss', 'hours-per-week','native-country', 'result'])

    fnlwgt=[0,0,0,0,0,0,0,0,0]

    for i in range(len(df)):
        if df.iloc[i,2]<=50000:
            fnlwgt[0]+=1
        elif df.iloc[i,2]<=100000:
            fnlwgt[1]+=1
        elif df.iloc[i,2]<=150000:
            fnlwgt[2]+=1
        elif df.iloc[i,2]<=200000:
            fnlwgt[3]+=1
        elif df.iloc[i,2]<=250000:
            fnlwgt[4]+=1
        elif df.iloc[i,2]<=300000:
            fnlwgt[5]+=1
        elif df.iloc[i,2]<=350000:
            fnlwgt[6]+=1
        elif df.iloc[i,2]<=400000:
            fnlwgt[7]+=1
        else:
            fnlwgt[8]+=1

    xs=['0~50k','50k~100k','100k~150k','150k~200k','200k~250k','250k~300k','300k~350k','350k~400k','400k~450k']

    plt.bar(xs,fnlwgt)
    plt.show()

第二个问题,当我使用set_xticklabels时,这个数字显示了一个奇怪的比例。我该如何解决?

1

我只是改变了

    plt.bar(xs,fnlwgt)
    plt.show()

    fig = plt.figure()
    ax1 = fig.add_subplot(131)
    ax1.bar(xs, fnlwgt)
    ax1.set_xticklabels(xs)
    plt.show()

无论我放大还是全屏开启,这个数字仍然保持不变。我知道我可以设置方向但我只是想看看我是否可以在不设置方向的情况下获得相同的结果。

2 个答案:

答案 0 :(得分:0)

您可以通过更改图形大小来更改设置纵横比。例如,

fig = plt.figure(figsize=(12, 5))

ax1 = fig.add_subplot(131)
ax1.bar(xs, fnlwgt)
ax1.set_xticklabels(xs)
plt.show()

但是,宽高比可能是由于您创建了3个子图(ax1 = fig.add_subplot(131))并且仅使用3个子图中的一个。

答案 1 :(得分:0)

您是否尝试通过更改图形本身的纵横比或通过移动刻度标签本身来使刻度标签可读?纵横比可以配置为通过以下方式使标签更具可读性:

electron-packager . App-Name --overwrite --asar --platform=win32 --icon=assets/icons/Icon.ico --prune=true --out=./dist

虽然您可以通过旋转或许多其他方法简单地配置标签的位置:

graph = plt.figure(figsize=(x, y))