【问题标题】:How to center the grid of a plot on scatter points?如何将绘图的网格集中在散点上?
【发布时间】:2018-12-13 16:40:48
【问题描述】:

我有这个散点图:

我想移动网格,使每个点(绿色方块)都被网格的单元格包围。例如:

重现情节的代码:

import matplotlib.pyplot as plt

data = [24, 24, 24, 16, 16, 2, 2, 2]
x = list(range(0, len(data)))
y = list(range(0, 25))

plt.scatter(x, data, marker='s', c='g', s=100)
plt.yticks(y)
plt.xticks(x)

plt.grid(True)
plt.show()

【问题讨论】:

    标签: python-3.x matplotlib scatter-plot


    【解决方案1】:

    也许像下面这样的东西符合要求。您可以将次要刻度用于网格,将主要刻度用于标签。

    import numpy as np
    import matplotlib.pyplot as plt
    
    data = [24, 24, 24, 16, 16, 2, 2, 2]
    x = list(range(0, len(data)))
    
    fig, ax = plt.subplots()
    ax.scatter(x, data, marker='s', c='g', s=49)
    
    ax.set_yticks(np.arange(25))
    ax.set_yticks(np.arange(25+1)-0.5, minor=True)
    
    ax.set_xticks(np.arange(len(data)))
    ax.set_xticks(np.arange(len(data)+1)-0.5, minor=True)
    
    ax.grid(True, which="minor")
    ax.set_aspect("equal")
    plt.show()
    

    【讨论】:

    • 有没有办法放大剧情?我正在尝试使用plt.figure(figsize=(3,4)),但它只是在创建另一个数字
    • figsize=(3,4) 将缩小情节。您可能想使用fig, ax = plt.subplots(figsize=(10,9)) 来实际放大它。
    • 是的,但它修改了图形的大小而不是绘图的大小,所以它没有帮助
    • 坐标轴位于图中。它将随图形尺寸缩放。如果将图形放大,则坐标轴将相应缩放。
    • 嗯,不。也许是因为它是一个 sublopts()?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    • 1970-01-01
    • 2021-10-29
    • 2012-01-02
    相关资源
    最近更新 更多