【问题标题】:Move the ytick vertically in plot python在 plot python 中垂直移动 ytick
【发布时间】:2023-02-14 02:33:34
【问题描述】:

我有一个直方图,我想垂直移动 yticks(比现有 yticks 的位置低 0.2 厘米)。 我搜索了很多,但找不到任何能做到这一点的东西。你能帮我吗?我在这里附上了一张图片,显示了 y 刻度的新位置。

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

VAL = [8, 4, 5, 20]
objects = ['h', 'b', 'c', 'a']
y_pos = np.arange(len(objects))

cmap = plt.get_cmap('RdYlGn_r')
norm = plt.Normalize(vmin=min(VAL), vmax=max(VAL))
ax = sns.barplot(x=VAL, y=objects, hue=VAL, palette='RdYlGn_r', dodge=False)

plt.yticks(y_pos, objects)

plt.show()

【问题讨论】:

  • 由于 seaborn 反转水平条形图的 y 轴,您可以使用 ax.set_yticks(y_pos+0.2, objects) 而不是 plt.yticks(y_pos, objects)。请注意,这里的距离是以数据为单位测量的,两个条之间的距离是一个单位。

标签: python matplotlib seaborn


【解决方案1】:

由于我们希望偏移量与绘图大小成比例,因此最好将偏移量基于 y_pos 的步长。我们将其存储为dy,然后将它的一小部分作为偏移量添加到yticks()中。

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

VAL = [8, 4, 5, 20]
objects = ['h', 'b', 'c', 'a']
y_pos = np.arange(len(objects))
dy = y_pos[1] - y_pos[0]

cmap = plt.get_cmap('RdYlGn_r')
norm = plt.Normalize(vmin=min(VAL), vmax=max(VAL))
ax = sns.barplot(x=VAL, y=objects, hue=VAL, palette='RdYlGn_r', dodge=False)

plt.yticks(y_pos + 0.1*dy, objects)

plt.show()

【讨论】:

    猜你喜欢
    • 2021-04-23
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 2014-07-06
    • 1970-01-01
    • 2017-02-10
    相关资源
    最近更新 更多