范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Mpld3库一个matplotlib被忽视功能,python数据可视化web库

  1 说明:
  =====
  1.1 MPLD3=mpl+d3=matplotlib+D3js。
  1.2 是基于当前python下面最流行的图形图像库matplotlib和最知名的javascript库D3js上开发得到的。
  1.3 用于创建web交互式数据可视化。
  1.4 mpld3——Bringing Matplotlib to the Browser。
  2 准备:
  =====
  2.1 官网:https://pypi.org/project/mpld3/ https://github.com/mpld3/mpld3 http://mpld3.github.io/  #很慢很卡,我没上去
  2.2 安装:pip install mpld3  #其实不用安装,新版的matplotlib自带的
  2.3 环境:
  华为笔记本电脑、深度deepin-linux操作系统、谷歌浏览器、python3.8和微软vscode编辑器。
  3 折线图:
  ========
  3.1 代码:#折线图 #从模块导入就知道,mpld3是matplotlib自带的 import matplotlib.pyplot as plt, mpld3 #import mpld3  #也可以这样导出 #这是图片大小设置,建议这样设置大小,默认太大不好看 fig=plt.figure(figsize=(3,2)) #fig=plt.figure(num=1,figsize=(3,2)) datax=[3,1,4,1,5] #plt.plot([3,1,4,1,5], "ks-", mec="w", mew=5, ms=20) #"r-.d"代表red-.p==红色-.-.-.◇菱形 #"c-d" plt.plot(datax, "r-.d", mec="w", mew=5, ms=20) mpld3.show()
  3.2 操作和效果图:
  4 图和图例的交互式:
  ===============
  4.1 代码:import matplotlib.pyplot as plt,mpld3 import numpy as np import pandas as pd #import mpld3  #这种导出注释掉,放在matplotlib的第一行那样导出 from mpld3 import plugins #数据 np.random.seed(9615) N = 100 #支持中文 df = pd.DataFrame((.1 * (np.random.random((N, 5)) - .5)).cumsum(0),                   columns=["a组", "b组", "c组", "d组", "e组"],) #折线图和交互式组合 # plot line + confidence interval fig, ax = plt.subplots(figsize=(3,2)) #等价于下面2行 #fig = plt.figure(figsize=(3,2)) #ax = fig.add_subplot(1,1,1) #以上这样设置图片大小成功 ax.grid(True, alpha=0.3) for key, val in df.iteritems():     l, = ax.plot(val.index, val.values, label=key)     ax.fill_between(val.index,                     val.values * .5, val.values * 1.5,                     color=l.get_color(), alpha=.4) # define interactive legend handles, labels = ax.get_legend_handles_labels() # return lines and labels interactive_legend = plugins.InteractiveLegendPlugin(zip(handles,                                                          ax.collections),                                                      labels,                                                      alpha_unsel=0.5,                                                      alpha_over=1.5,                                                       start_visible=True) #图片和图例的交互式插件的联系设置 plugins.connect(fig, interactive_legend) ax.set_xlabel("x") ax.set_ylabel("y") #图的标题名和大小 ax.set_title("Interactive legend", size=20) mpld3.show()
  4.2 图:
  4.3 小插曲:
  这里中文是支持的,这个和我曾经的matplotlib中文支持有点不一样,可以参考我的另外一篇文章,里面有提到。
  《NetworkX:是一个简单、多样化、能快速生成网络图形的Python库》,这篇文章的第6点:中文显示,简单且一劳永逸。
  5 散点图:
  =======
  5.1 代码:#Scatter图 import matplotlib.pyplot as plt,mpld3 import numpy as np #方法一,facecolor背景颜色 fig, ax = plt.subplots(subplot_kw=dict(facecolor="#EEEEEE"),figsize=(3, 2)) #fig, ax = plt.subplots(subplot_kw=dict(facecolor="lightpink"),figsize=(3, 2)) #fig, ax = plt.subplots()  #采用默认 #方法二 #fig = plt.figure(figsize=(3,2)) #ax = fig.add_subplot(1,1,1) #方法三 #fig, ax = plt.subplots(1,1, figsize=(3, 2))  N = 100 scatter = ax.scatter(np.random.normal(size=N),                      np.random.normal(size=N),                      c=np.random.random(size=N),                      s=1000 * np.random.random(size=N),                      alpha=0.3,                      cmap=plt.cm.jet) #网格设置 #ax.grid(color="white", linestyle="solid") #图标标题名 ax.set_title("Scatter Plot (with tooltips!)", size=20) labels = ["point {0}".format(i + 1) for i in range(N)] #显示鼠标小提示 tooltip = mpld3.plugins.PointLabelTooltip(scatter, labels=labels) mpld3.plugins.connect(fig, tooltip) mpld3.show()
  5.2 图:
  6 面积曲线图:
  ==========
  6.1 代码:import matplotlib.pyplot as plt, mpld3 import numpy as np x = np.linspace(0, 10, 200) data_obj = {"x": x,             "y1": 2 * x + 1,             "y2": 3 * x + 1.2,             "mean": 0.5 * x * np.cos(2*x) + 2.5 * x + 1.1}  #fig, ax = plt.subplots()  #默认大小 fig, ax = plt.subplots(1,1,figsize=(3,2))   #填充两条线之间的颜色 ax.fill_between("x", "y1", "y2", color="yellow", data=data_obj) ax.plot("x", "mean", color="black", data=data_obj) mpld3.show()
  6.2 图:
  7 拖拽drag:
  ========
  7.1 结合d3.js的JavaScript的代码:import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl import mpld3 from mpld3 import plugins, utils  class DragPlugin(plugins.PluginBase):     JAVASCRIPT = """     mpld3.register_plugin("drag", DragPlugin);     DragPlugin.prototype = Object.create(mpld3.Plugin.prototype);     DragPlugin.prototype.constructor = DragPlugin;     DragPlugin.prototype.requiredProps = ["id"];     DragPlugin.prototype.defaultProps = {}     function DragPlugin(fig, props){         mpld3.Plugin.call(this, fig, props);         mpld3.insert_css("#" + fig.figid + " path.dragging",                          {"fill-opacity": "1.0 !important",                           "stroke-opacity": "1.0 !important"});     };      DragPlugin.prototype.draw = function(){         var obj = mpld3.get_element(this.props.id);          var drag = d3.drag()             .subject(function(d) { return {x:obj.ax.x(d[0]),                                           y:obj.ax.y(d[1])}; })             .on("start", dragstarted)             .on("drag", dragged)             .on("end", dragended);          obj.elements()            .data(obj.offsets)            .style("cursor", "default")            .call(drag);          function dragstarted(d) {           d3.event.sourceEvent.stopPropagation();           d3.select(this).classed("dragging", true);         }          function dragged(d, i) {           d[0] = obj.ax.x.invert(d3.event.x);           d[1] = obj.ax.y.invert(d3.event.y);           d3.select(this)             .attr("transform", "translate(" + [d3.event.x,d3.event.y] + ")");         }          function dragended(d) {           d3.select(this).classed("dragging", false);         }     }     """      def __init__(self, points):         if isinstance(points, mpl.lines.Line2D):             suffix = "pts"         else:             suffix = None          self.dict_ = {"type": "drag",                       "id": utils.get_id(points, suffix)}  fig, ax = plt.subplots(1,1,figsize=(3,2))   np.random.seed(0) points = ax.plot(np.random.normal(size=20),                  np.random.normal(size=20), "or", alpha=0.5,                  markersize=50, markeredgewidth=1) ax.set_title("Click and Drag", fontsize=18) plugins.connect(fig, DragPlugin(points[0])) mpld3.show()
  7.2 效果图:
  8 再附一张图,代码省略:
  ===自己整理并分享出来===
  喜欢的人,请点赞、关注、评论、转发和收藏。

我给儿子做了280张英语语法闪卡,忍不住要分享给你Part。1前段时间陪女儿学英语,我就发现一个奇怪的现象。老师每次给娃提问,小丫头回答得都十分言简意赅。老师问,Howareyoutoday?女儿答,Good!老师问,Whatar如何体面地帮娃,戒掉游戏和手机Part。1前几天带娃出去吃饭,点完餐后,就是漫长的等待时间。儿子有点无聊,他一瞅周围,别的桌子上的顾客也在等餐。不过爸爸妈妈都在刷着手机,而小孩子则人手一台iPad。儿子有点不甘318岁,各年龄段最好用的数学App在这里Part。1昨天在给娃整理iPad上的App。我是个程序员,程序员的特色就是喜欢琢磨新的东西。每每AppStore里有新的教育软件更新出来,我都会第一时间尝鲜。所以,我的iPad上我从清华学到的儿童创意思维前段时间,我跟清华的老师一起设计一个STEM主题的儿童科学教案。我们讨论的方案想围绕重力这个主题展开,让孩子做一个很酷的项目,从中学习重力的知识点。我的方案是做了一个秋千,在高处一不怕空气突然安静,就怕小舍得里数学老师附体Part。1前几天看小舍得,突然扫到钟老师骂学生的一幕。又是骂孩子笨,又是骂孩子木头脑子,各种伤自尊的词都上了。而学生则是可怜兮兮地坐在那边,手足无措。哎,这个钟老师太过分了,太让对不起Part。1昨天有件事搞得很郁闷!前段时间跟火花思维博弈了好久,终于谈了一个很好的福利,把她们的魔方课和思维导图课薅出来,1分钱的价格拼团购买,跟免费送也没啥区别了。昨天文章发出去悄悄告诉你我用三套暑假计划表,改掉儿子ampampquot拖拖拖ampampquot的坏毛病Part。1儿子前几天刚刚考完试。小家伙最近考试状态我是很满意的,早在一个多月前,他就忙不迭地开始复习。英语数学物理逻辑化学生物历史中文考试科目很多,但是娃做了一个很好的复习计划,啧啧!这绘本,这画风,最低才5元女儿这段时间迷上了汪汪队,每次打开动画片的一刹那,汪汪队那高亢的音乐响起时,我都忍不住眉头一皱。不是说汪汪队不好,只不过它的剧情真的太太太雷同了,看多了也没什么营养!可是换什么给娃OMG,又出教育新政,学区房彻底ampampquot躺平ampampquotPart。1前天,北京出台了一个新政策,简单来说,就是老师校长轮岗制,从北京开始,在各个学校,大规模推行老师轮岗。北京政策向来是其它城市的风向标,北京实行教师轮岗后,相信后面会有更开学必看的英语教学动画,娃恨不得每天刷10集Part。1前几天,有读者问我一个关于自然拼读的问题正好最近我正测试自己设计的自然拼读游戏板,教女儿各个元音的词根。我当初设计这张图的时候,花了不少时间专门研究过自然拼读的学习体系魔都年薪36万抢家教这么教,爆Part。1前几天朋友给我发了一条信息我们去应聘家教吧!然后附了几张图。这是南京的家教收入,年薪30W起!这是上海北京的家教收入,有的直接月薪3W起步!我掐指一算,每周做两三个家教
孙俪微博吐槽这个说100遍都没用的教育方式,很多父母还在用导语说起唠叨来,应该是每个爸爸妈妈都用过的育儿方式吧。前段时间带开心到肯德基,对面坐的是一对母子,妈妈买了一大盘快餐,在那里边看着儿子吃东西边说话。孩子吃汉堡的时候,因为嘴小,一下妈妈母乳喂养时,爸爸可以做的3件事,第3件事能做到的爸爸并不多导语说起母乳喂养来,很多人都觉得这应该是妈妈的事情。毕竟分泌母乳,宝宝吃母乳等环节都与妈妈息息相关,爸爸就算是想帮个忙也是有心无力。所以在现实中,很多家庭的责任分工就是爸爸负责工作性子急磨蹭的孩子怎么办?育儿专家很正常,这样教育就对了导语前段时间,有不少粉丝妈妈们给开心爸爸留言,说了自己孩子的一些表现比如有的妈妈们说,自己的孩子实在是太性急了,要个玩具,在网上面买了还不行,必须一天看十几次的手机,嘴里面还说着,3岁男孩被迫分房睡逼迫着长大的孩子,学不会真正的勇敢01hr很多爸爸妈妈都希望自己的孩子,能够变得勇敢自信独立,成为一个有担当有作为的人。但是在如何培养孩子勇敢这件事情上,很多爸爸妈妈都走错了路。前段时间,开心爸爸看到了这样的一则新孩子玩具一定得收拾整齐?育儿专家这样做是在扼杀孩子的创造力导语前段时间开心爸爸在知乎上面看到了这样的一个问题家有孩子,最让爸爸妈妈们发愁的是什么?下面一个每天都是在收拾玩具中不断循环的回答,得到了很多爸爸妈妈们的共鸣。相信每个爸爸妈妈都有吴谢宇弑母案过度控制的妈妈和极力压抑的孩子,是一场悲剧导语近日,北大学霸吴谢宇弑母一案,随着吴谢宇的被捕,以及逐渐交代作案动机,再一次的被推上了热搜。事实上,这几年弑母的新闻很多,开心爸爸随手一搜,就能看到很多2017年12月,四川省幼儿园的孩子要不要超前学习?育儿专家这是对孩子最大的伤害导语随着天气的逐渐转凉,孩子们的暑假也到了尾声。昨天开心妈妈回家后就是满脸凝重,白天在办公室的时候,她们聊起了孩子们的暑假是怎么过的话题。得到的答案五花八门,各种各样的都有。比如有小欢喜有一对焦虑的爸爸妈妈,对孩子来说是多么大的灾难导语周五下午,开心的幼儿园开了一次家长会,这是每次假期过后开学之前的必备活动。所谓的开会,无非是老师总结一下过去一个学期,孩子们的成长情况,以及接下来的时间,孩子们的培养方向等。在爸爸妈妈为什么要上班?3个不同的回答,决定了孩子未来的格局导语今年暑假,因为幼儿园早早的就放了假,所以开心也早早的回了老家。开心爸爸和开心妈妈一般来说是每隔两个星期回去一次。上周是开心爸爸回去的。因为已经两个星期没见了,开心见到开心爸爸明孩子什么年龄上学好?育儿专家建议晚于这个年龄,男孩要更晚些01hr这几天,开心爸爸的一个同事很烦。原因也很简单,马上就是9月份了,又到了一年一度幼儿园新生入学的日子。但是这位同事家的孩子,出生日期比较晚(10月份),并不满足今年新生入园的引200万人关注的985名校闹剧,因擅长英语自然的双语语言,被误会文艾小贝爱教育希望1087万在看到高考成绩的时候都能露出开心的笑容,说起国内第一梯队的院校那毫无疑问就是985重点行列的院校了。31省市的2021年的高考都已经落下了帷幕,在考完之