python - 更改轴以在seaborn中使用对数刻度

标签 python matplotlib graph seaborn scale

使用以下脚本:

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

有没有办法可以删除刻度之间的间距并以相等的间距显示我需要的值?

最佳答案

这可以通过使用 pyplot.xscalepyplot.yscale 更改 x 和 y 比例来完成。修改以下代码:

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

关于python - 更改轴以在seaborn中使用对数刻度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59650382/

相关文章:

python - 是否有一种数据类型/结构可以 : hold a list of numbers, 是可散列的、无序的并且允许重复

python - 将 static 一些静态文件位置从/static/file.js 更改为/file.js

python - 为什么 matplotlib imshow() 和 show() 函数根据图像是作为 uint8 还是 in64 读取,以不同的配色方案显示图像?

python - 根据python matplotlib中的数据集生成带有颜色渐变的网格

R图度数分布不起作用

python - 如何根据用户输入更改 Django 查询查找

python - Pandas 日期未显示在绘图上

Python (Matplotlib) - 三元图上的刻度线

algorithm - 具有相关顶点成本的二分选择

algorithm - 图中 MST 边所必需的