matplotlib 单堆叠条形图中的Y轴

7xzttuei  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(125)

我想显示一个单一的堆叠条形图,表示不同海拔高度的大气层。

altitude = [1, 2, 3, 10, 20, 35, 60, 100]
pd.DataFrame(altitude).T.plot(kind='bar',
                              stacked=True, color='lightgray',
                              edgecolor="black",
                              legend=False)
plt.show()

y轴看起来一团糟,我怎么能在0altitude[-1]之间有线性间隔的刻度,即100km?
附加问题:我不需要x轴上的0,我怎么才能摆脱它?

6pp0gazn

6pp0gazn1#

Y轴实际上是正确的。堆叠图所做的就是将每个值叠加起来。海拔加起来是231,所以这就是情节的高度。你似乎在寻找的是一个叠加图,其中每个高度差异都占到了。这可以使用np.diff来完成,其中prepend=0考虑初始高度为0。
对于x轴刻度,可以使用tick_params方法删除这些刻度,其中设置bottom=Falselabelbottom=False

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

plt.close("all")

altitudes = np.array([1, 2, 3, 10, 20, 35, 60, 100])
heights = np.diff(altitudes, prepend=0)

fig, ax = plt.subplots()
pd.DataFrame(heights).T.plot(kind="bar",
                             stacked=True, 
                             color="lightgray",
                             edgecolor="k",
                             legend=False,
                             ax=ax)
ax.tick_params(bottom=False, labelbottom=False)

相关问题