【问题标题】:Plot segments along axis using start and end points in python (like a stacked bar graph)使用python中的起点和终点沿轴绘制线段(如堆叠条形图)
【发布时间】:2020-10-15 02:45:45
【问题描述】:

我正在尝试使用包含它们的开始和结束编号的 PANDAS 数据框沿轴绘制线段,我想知道是否可以在 python 中执行此操作。以下是数据的示例:

ID  start   end
A   94      97
B   20      22
B   22      35
A   63      92

an example 我希望情节看起来如何。

数据框包含多个段的起点和终点,我想沿轴绘制它们,有点像 matplotlib 中的水平堆叠条形图 (barh),但我不知道该怎么做。我还在寻找一种基于 ID 为每个段着色的方法(例如,分类为 B 的段为红色,A 为蓝色)。

我尝试使用df.plot.barh(stacked=True),但我无法让它在同一个栏中包含多个段。如果您有任何想法,请告诉我!

【问题讨论】:

  • 请不要发布您的数据图像。将文本复制并粘贴到问题中。
  • @QuangHoang 知道了,刚刚编辑过

标签: python pandas matplotlib plot graph


【解决方案1】:

你可以做一个plt.bar:

colors = df.ID.map({'A':'C0', 'B': 'C1'})

plt.bar([1]*len(df), df.end-df.start, bottom=df.start, color=colors,
        edgecolor='k')

输出:

或者如果你想要一个水平条形图:

plt.barh([1]*len(df), df.end-df.start, 
         left=df.start, color=colors,
         edgecolor='k')

输出:

【讨论】:

  • 这太完美了!一个后续问题,我无法修改轴。我想完全删除垂直轴标签并将水平轴设置为从 0 到 107,这种格式可以吗?
  • 另外,你知道有没有什么办法可以垂直缩小情节?
  • ylimxlimfigsize 一起玩。你可以查一下。
猜你喜欢
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 2017-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-24
相关资源
最近更新 更多