matplotlib 直方图轴格式化

Dyn*_*icQ 0 python matplotlib histogram

我有一个来自 sql 数据库查询的直方图。代码如下:

def histogram(self):

    conn = sqlite3.connect('tooldatabase.db')
    c = conn.cursor()
    c.execute('PRAGMA foreign_keys = ON')
    c.execute("SELECT evaluation from evaluations")
    evaluations=c.fetchall()
    print(evaluations)
    minimum=min(evaluations, key = lambda t: t[0])
    maximum=max(evaluations, key = lambda t: t[0])
    print(minimum,maximum)
    eval=[]
    for (y,) in evaluations:
        eval.append(y)
    bin=[]
    for x in range(1,maximum[0]+2):
        bin.append(x)

    figure=plt.figure(1)
    plt.hist(eval,bins=bin, facecolor='blue',edgecolor='black',)
    plt.xticks(bin, bin)
    plt.xlabel('evaluation')
    plt.ylabel('No of problems')
    plt.title('Evaluations Distribution Histogram')
    plt.show()
Run Code Online (Sandbox Code Playgroud)

输出如下:https : //gyazo.com/d73b20a118db0088aab261c079613b00

我想将其显示为:https : //gyazo.com/063990cd8741682f45b5a37ba594ff56

x 轴数字向右侧移动多一点的地方。有没有办法做到这一点?

Ser*_*ity 7

我认为你必须修改xticks位置,如:

import matplotlib.pyplot as plt
import numpy as np

# test data
eval = np.random.randint(0,3,10)
bin = np.arange(4) # len + 1 

figure=plt.figure(1)
plt.hist(eval,bins=bin, facecolor='blue',edgecolor='black')
# shift ticks by .5
plt.xticks(bin-.5, bin)
plt.xlabel('evaluation')
plt.ylabel('No of problems')
plt.title('Evaluations Distribution Histogram')
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明