我想在matplotlib中创建一个破碎的垂直条形图.

为了更好地了解我所追求的结果,我和Balsamiq一起举了一个例子:

我看过matpltolib docs和examples,但我似乎找不到合适的图表类型.唯一看起来很相似的是boxplot,但这不是我需要的.

>我宁愿不必使用图形基元手动绘制图形.
>我可以根据需要按摩数据.

PS:如果你知道一个好的库以另一种语言(例如javascript)执行此操作,我也会对指针感激不尽.

解决方法

听起来你有几个系列的开始日期时间和停止日期时间.

在这种情况下,只需使用条形图来绘制内容,并告诉matplotlib轴是日期.

为了获得时间,您可以利用matplotlib的内部日期格式是浮点数的事实,其中每个整数对应于当天的0:00.因此,为了获得时间,我们可以做的时间=日期%1.

举个例子(其中90%是生成和操作日期.绘图只是对bar的一次调用.):

import datetime as dt
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl

def main():
    start,stop = dt.datetime(2012,3,1),dt.datetime(2012,4,1)

    fig,ax = plt.subplots()
    for color in ['blue','red','green']:
        starts,stops = generate_data(start,stop)
        plot_durations(starts,stops,ax,facecolor=color,alpha=0.5)
    plt.show()

def plot_durations(starts,ax=None,**kwargs):
    if ax is None:
        ax = plt.gca()
    # Make the default alignment center,unless specified otherwise
    kwargs['align'] = kwargs.get('align','center')

    # Convert things to matplotlib's internal date format...
    starts,stops = mpl.dates.date2num(starts),mpl.dates.date2num(stops)

    # Break things into start days and start times 
    start_times = starts % 1
    start_days = starts - start_times
    durations = stops - starts
    start_times += int(starts[0]) # So that we have a valid date...

    # Plot the bars
    artist = ax.bar(start_days,durations,bottom=start_times,**kwargs)

    # Tell matplotlib to treat the axes as dates...
    ax.xaxis_date()
    ax.yaxis_date()
    ax.figure.autofmt_xdate()
    return artist

def generate_data(start,stop):
    """Generate some random data..."""
    # Make a series of events 1 day apart
    starts = mpl.dates.drange(start,stop,dt.timedelta(days=1))

    # vary the datetimes so that they occur at random times
    # Remember,1.0 is equivalent to 1 day in this case...
    starts += np.random.random(starts.size)

    # Make some random stopping times...
    stops = starts + 0.2 * np.random.random(starts.size)

    # Convert back to datetime objects...
    return mpl.dates.num2date(starts),mpl.dates.num2date(stops)

if __name__ == '__main__':
    main()

在旁注中,对于从一天开始到下一天结束的事件,这将使y轴延伸到第二天.如果您愿意,可以通过其他方式处理它,但我认为这是最简单的选择.

如何在matplotlib中创建损坏的垂直条形图?的更多相关文章

  1. MPAndroidChart BarChart水平/垂直

    我正在使用MPAndroidChart库.在BarChart默认情况下,所有条形图都是垂直的,如何在水平方向上显示它?

  2. 如何修改MPAndroidChart BarChart中的条宽?

    我正在使用MPAndroidChartlibrary.我想修改条形图中的条形大小.你能告诉我们在mpandroid图表中检查条形图中条形图的修改大小的位置解决方法您可以减小条之间的间距,这将自动增加条的宽度.更新v3.0.0:从此库版本开始,您可以使用以下方法控制条宽:您为此方法提供的数字表示x轴上的特定间隔.如果你的总轴的范围是10k,并将条宽设置为1000,条将覆盖总x轴范围的10%.

  3. Python数据分析之 Matplotlib 折线图绘制

    这篇文章主要介绍了Python数据分析之 Matplotlib 折线图绘制,在数据分析中,数据可视化也非常重要,下文通过数据分析展开对折线图的绘制,需要的小伙伴可以参考一下

  4. Python利用matplotlib画出漂亮的分析图表

    这篇文章主要介绍了Python利用matplotlib画出漂亮的分析图表,文章首先引入数据集展开详情,需要的朋友可以参考一下

  5. Python matplotlib包和gif包生成gif动画实战对比

    使用matplotlib生成gif动画的方法相信大家应该都看到过,下面这篇文章主要给大家介绍了关于Python matplotlib包和gif包生成gif动画对比的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

  6. Python Matplotlib通过plt.subplots创建子绘图

    这篇文章主要介绍了Python Matplotlib通过plt.subplots创建子绘图,plt.subplots调用后将会产生一个图表和默认网格,与此同时提供一个合理的控制策略布局子绘图,更多相关需要的朋友可以参考下面文章内容

  7. Python数据分析之 Matplotlib 散点图绘制

    这篇文章主要介绍了Python数据分析之 Matplotlib 散点图绘制,散点图又称散点图,是使用多个坐标点的分布反映数据点分布规律、数据关联关系的图表,下文对散点图的详细介绍及绘制,需要的小伙伴可以参考以一下

  8. 详解Python中matplotlib模块的绘图方式

    Matplotlib是Python中最受欢迎的数据可视化软件包之一,它是 Python常用的2D绘图库,同时它也提供了一部分3D绘图接口。本文将详细介绍Matplotlib的绘图方式,需要的可以参考一下

  9. matplotlib之Pyplot模块绘制三维散点图使用颜色表示数值大小

    在撰写论文时常常会用到matplotlib来绘制三维散点图,下面这篇文章主要给大家介绍了关于matplotlib之Pyplot模块绘制三维散点图使用颜色表示数值大小的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下

  10. Python+matplotlib绘制条形图和直方图

    Matplotlib是Python的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。本文将为大家介绍如何用matplotlib绘制条形图和直方图,感兴趣的朋友可以学习一下

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部