Измените оси, чтобы использовать шкалу логарифми c в морском роге - PullRequest
1 голос
/ 08 января 2020

Используя следующий скрипт:

ticks = ['1', '2', '4', '8', '16']
resize = [1, 2 ,4 ,8 ,16]
batch_size = [1 ,2 ,4, 8, 16]

def main():
    headers = ["RESIZE FACTOR", "BATCH SIZE", "FPS", "TOL", "GAIN"]

    graph = []

    for rs in resize:
        for bs in batch_size:
            fps = random()
            tol = random()

            gain = 100*(fps+tol)
            curr = [rs, bs, fps, tol, gain]

            graph.append(curr)

    graph_df = pd.DataFrame(graph, columns=headers)

    sns.scatterplot(data=graph_df,
                    x="RESIZE FACTOR",
                    y="BATCH SIZE",
                    size="GAIN",
                    edgecolor='none'
                    )

    plt.xticks(resize, ticks)
    plt.yticks(resize, ticks)
    plt.autoscale(False)

    plt.xlabel("RESIZE FACTOR")
    plt.ylabel("BATCH SIZE")

    plt.show()

Я создаю следующий график:

enter image description here

Есть ли способ, которым я могу убрать интервал между галочками и показать нужные мне значения с равным интервалом между ними?

1 Ответ

2 голосов
/ 08 января 2020

Это можно сделать, изменив шкалы x и y на pyplot.xscale и pyplot.yscale. Измените следующий код:

plt.xticks(resize, ticks)
plt.yticks(resize, ticks)
plt.autoscale(False)

на:

plt.yscale("log")
plt.xscale("log")
plt.xticks(resize, ticks)
plt.yticks(resize, ticks)
plt.autoscale(False)

Что дает нам:

enter image description here

...