Questions tagged «matplotlib»

Matplotlib是Python的绘图库,可以交互使用或嵌入独立的GUI中。其紧凑的“ pyplot”界面类似于MATLAB®的绘图功能。

1
创建两个子图后如何共享它们的x轴?
我正在尝试共享两个子图轴,但是在创建图形之后,我需要共享x轴。因此,例如,我创建了这个图: import numpy as np import matplotlib.pyplot as plt t= np.arange(1000)/100. x = np.sin(2*np.pi*10*t) y = np.cos(2*np.pi*10*t) fig=plt.figure() ax1 = plt.subplot(211) plt.plot(t,x) ax2 = plt.subplot(212) plt.plot(t,y) # some code to share both x axis plt.show() 除了注释,我将插入一些代码以共享两个x轴。我没有找到任何线索我可以做到这一点。有一些属性 _shared_x_axes,_shared_x_axes当我检查图轴(fig.get_axes())时,我不知道如何链接它们。

1
在matplotlib中的两条垂直线之间填充
我通过去例子中matplotlib的文件,但它不是我清楚我怎样才能使填充两个特定的垂直线之间的区域的曲线图。 例如,假设我要在x=0.2和之间创建一个绘图x=4(针对整个y绘图范围)。我应该使用fill_between,fill还是fill_betweenx? 我可以使用where条件吗?

4
RuntimeWarning:在除法中遇到无效的值
我必须使用欧拉方法为“弹簧中的球”模型编写程序 from pylab import* from math import* m=0.1 Lo=1 tt=30 k=200 t=20 g=9.81 dt=0.01 n=int((ceil(t/dt))) km=k/m r0=[-5,5*sqrt(3)] v0=[-5,5*sqrt(3)] a=zeros((n,2)) r=zeros((n,2)) v=zeros((n,2)) t=zeros((n,2)) r[1,:]=r0 v[1,:]=v0 for i in range(n-1): rr=dot(r[i,:],r[i,:])**0.5 a=-g+km*cos(tt)*(rr-L0)*r[i,:]/rr v[i+1,:]=v[i,:]+a*dt r[i+1,:]=r[i,:]+v[i+1,:]*dt t[i+1]=t[i]+dt #print norm(r[i,:]) plot(r[:,0],r[:,1]) xlim(-100,100) ylim(-100,100) xlabel('x [m]') ylabel('y [m]') show() 我不断收到此错误: a=-g+km*cos(tt)*(rr-L0)*r[i,:]/rr RuntimeWarning: invalid value encountered in …

4
获取默认的线条颜色周期
当您绘制第一行是蓝色,然后是绿色,然后是红色等时,我注意到了。 有什么方法可以访问此颜色列表?我已经看过一百万篇关于如何更改颜色循环或访问迭代器的文章,但是没有关于如何获取默认情况下matplotlib循环通过的颜色列表的文章。
95 matplotlib 

4
Matplotlib图例不起作用
自从升级matplotlib以来,每当尝试创建图例时都会出现以下错误: /usr/lib/pymodules/python2.7/matplotlib/legend.py:610: UserWarning: Legend does not support [<matplotlib.lines.Line2D object at 0x3a30810>] Use proxy artist instead. http://matplotlib.sourceforge.net/users/legend_guide.html#using-proxy-artist warnings.warn("Legend does not support %s\nUse proxy artist instead.\n\nhttp://matplotlib.sourceforge.net/users/legend_guide.html#using-proxy-artist\n" % (str(orig_handle),)) /usr/lib/pymodules/python2.7/matplotlib/legend.py:610: UserWarning: Legend does not support [<matplotlib.lines.Line2D object at 0x3a30990>] Use proxy artist instead. http://matplotlib.sourceforge.net/users/legend_guide.html#using-proxy-artist warnings.warn("Legend does not support %s\nUse proxy artist instead.\n\nhttp://matplotlib.sourceforge.net/users/legend_guide.html#using-proxy-artist\n" % …

7
Matplotlib离散色条
我正在尝试在matplotlib中为散点图制作离散色条 我有x,y数据,并且每个点都有一个整数标记值,我想用一种独特的颜色来表示它,例如 plt.scatter(x, y, c=tag) 通常,标记将是介于0到20之间的整数,但是确切的范围可能会发生变化 到目前为止,我只是使用默认设置,例如 plt.colorbar() 它提供了连续的颜色范围。理想情况下,我想要一组n种离散颜色(在本示例中为n = 20)。更好的办法是使标记值0产生灰色,而使1-20变为彩色。 我已经找到了一些“烹饪书”脚本,但是它们非常复杂,我不能认为它们是解决看似简单的问题的正确方法

22
如何使用Python最大化plt.show()窗口
出于好奇,我想在下面的代码中知道如何执行此操作。我一直在寻找答案,但没有用。 import numpy as np import matplotlib.pyplot as plt data=np.random.exponential(scale=180, size=10000) print ('el valor medio de la distribucion exponencial es: ') print np.average(data) plt.hist(data,bins=len(data)**0.5,normed=True, cumulative=True, facecolor='red', label='datos tamano paqutes acumulativa', alpha=0.5) plt.legend() plt.xlabel('algo') plt.ylabel('algo') plt.grid() plt.show()

2
如何使用Python并排绘制两个图?
我在matplotlib上找到了以下示例: import numpy as np import matplotlib.pyplot as plt x1 = np.linspace(0.0, 5.0) x2 = np.linspace(0.0, 2.0) y1 = np.cos(2 * np.pi * x1) * np.exp(-x1) y2 = np.cos(2 * np.pi * x2) plt.subplot(2, 1, 1) plt.plot(x1, y1, 'ko-') plt.title('A tale of 2 subplots') plt.ylabel('Damped oscillation') plt.subplot(2, 1, 2) plt.plot(x2, …

6
使垂直网格线出现在matplotlib中的线图中
我想在绘图上同时获得水平和垂直网格线,但是默认情况下仅显示水平网格线。我正在使用pandas.DataFramepython中的sql查询中的a来生成在x轴上具有日期的折线图。我不确定为什么它们没有出现在日期上,我试图寻找答案,但是找不到答案。 我仅用来绘制图形的就是下面的简单代码。 data.plot() grid('on') data是DataFrame,其中包含日期和来自sql查询的数据。 我也尝试过添加下面的代码,但是我仍然得到相同的输出,但没有垂直网格线。 ax = plt.axes() ax.yaxis.grid() # horizontal lines ax.xaxis.grid() # vertical lines 有什么建议?

4
在Matplotlib中更改X轴比例
我使用Matlab创建了这个图 使用matplotlib,x轴绘制大量数字,例如100000、200000、300000。我想使用类似1、2、3和10 ^ 5的数字来表示它实际上是100000、200000、300000。 有没有一种简单的方法可以在matplotlib中创建这种比例?

3
在Jupyter / iPython中动态更新图的当前正确方法是什么?
在有关如何在ipython笔记本中(一个单元内)在循环中动态更新绘图的答案中,给出了一个示例,说明了如何在Python循环内在Jupyter笔记本中动态更新绘图。但是,这可以通过在每次迭代中销毁并重新创建绘图来实现,并且其中一个线程中的注释指出,可以使用新颖的%matplotlib nbagg魔术来改善这种情况,该魔术提供了嵌入在笔记本中的交互式图形,比静态图片 但是,nbagg就我所知,这个奇妙的新功能似乎完全没有记载,而且我找不到如何使用它动态更新绘图的示例。因此,我的问题是,如何使用nbagg后端有效地更新Jupyter / Python笔记本中的现有绘图?由于通常在matplotlib中动态更新图是一个棘手的问题,因此一个简单的工作示例将提供巨大帮助。指向有关该主题的任何文档的指针也将非常有帮助。 要清楚我要的是什么:我想做的是运行一些模拟代码进行几次迭代,然后绘制其当前状态的图,再运行其进行几次迭代,然后更新该图以反映当前状态,依此类推。因此,其想法是绘制一个图,然后在用户不进行任何交互的情况下,更新图中的数据,而不会破坏并重新创建整个图。 这是对上面链接的问题的答案进行的一些稍微修改的代码,该代码通过每次重新绘制整个图形来实现。我想达到相同的结果,但使用会更有效nbagg。 %matplotlib inline import time import pylab as pl from IPython import display for i in range(10): pl.clf() pl.plot(pl.randn(100)) display.display(pl.gcf()) display.clear_output(wait=True) time.sleep(1.0)

8
matplotlib:将轴偏移值格式化为整数或特定数字
我有一个matplotlib图,该图正在绘制始终被称为纳秒(1e-9)的数据。在y轴上,如果我有数十纳秒的数据,即 在44e-9中,轴上的值显示为4.4,其中+ 1e-8为偏移量。无论如何,有强制轴以+ 1e-9偏移显示44吗? 我的x轴也是如此,该轴显示+ 5.54478e4,我希望它显示+55447的偏移量(整数,无小数-该值以天为单位)。 我已经尝试了一些类似的事情: p = axes.plot(x,y) p.ticklabel_format(style='plain') 对于x轴,但这不起作用,尽管我可能使用不正确或对文档中的内容有误解,有人可以指出我正确的方向吗? 谢谢乔纳森 我尝试使用格式化程序进行操作,但尚未找到任何解决方案...: myyfmt = ScalarFormatter(useOffset=True) myyfmt._set_offset(1e9) axes.get_yaxis().set_major_formatter(myyfmt) 和 myxfmt = ScalarFormatter(useOffset=True) myxfmt.set_portlimits((-9,5)) axes.get_xaxis().set_major_formatter(myxfmt) 附带一提,我实际上对“偏移数”对象实际位于何处感到困惑……它是主要/次要刻度线的一部分吗?

6
使用字典使用matplotlib绘制条形图
有没有办法matplotlib直接使用字典中的数据来绘制条形图? 我的字典看起来像这样: D = {u'Label1':26, u'Label2': 17, u'Label3':30} 我期待 fig = plt.figure(figsize=(5.5,3),dpi=300) ax = fig.add_subplot(111) bar = ax.bar(D,range(1,len(D)+1,1),0.5) 工作,但事实并非如此。 这是错误: >>> ax.bar(D,range(1,len(D)+1,1),0.5) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python2.7/site-packages/matplotlib/axes.py", line 4904, in bar self.add_patch(r) File "/usr/local/lib/python2.7/site-packages/matplotlib/axes.py", line 1570, in add_patch self._update_patch_limits(p) File "/usr/local/lib/python2.7/site-packages/matplotlib/axes.py", line …

5
在同一图中绘制不同的数据框
我有一个具有多年温度记录的温度文件,格式如下: 2012-04-12,16:13:09,20.6 2012-04-12,17:13:09,20.9 2012-04-12,18:13:09,20.6 2007-05-12,19:13:09,5.4 2007-05-12,20:13:09,20.6 2007-05-12,20:13:09,20.6 2005-08-11,11:13:09,20.6 2005-08-11,11:13:09,17.5 2005-08-13,07:13:09,20.6 2006-04-13,01:13:09,20.6 每年的记录数量和时间不同,因此熊猫的datetimeindices都不同。 我想在同一图中绘制不同年份的数据以进行比较。X轴为1月至12月,Y轴为温度。我应该怎么做呢?

6
如何在Ipython Notebook中的循环中动态更新绘图(在一个单元格内)
环境:Python 2.7,matplotlib 1.3,IPython Notebook 1.1,Linux,Chrome。该代码位于一个输入单元格中,使用--pylab=inline 我想使用IPython笔记本和熊猫消耗流并每5秒动态更新一次绘图。 当我仅使用print语句以文本格式打印数据时,它就可以很好地工作:输出单元格仅保留打印数据并添加新行。但是,当我尝试绘制数据(然后循环更新)时,该绘制永远不会显示在输出单元格中。但是,如果我删除了循环,则只需绘制一次即可。它工作正常。 然后我做了一些简单的测试: i = pd.date_range('2013-1-1',periods=100,freq='s') while True: plot(pd.Series(data=np.random.randn(100), index=i)) #pd.Series(data=np.random.randn(100), index=i).plot() also tried this one time.sleep(5) 在我手动中断该进程(ctrl + m + i)之前,输出不会显示任何内容。在我中断它之后,该图正确显示为多条重叠线。但是我真正想要的是一个显示并每5秒更新一次的图(或者每当plot()调用函数时,就像我上面提到的print语句输出一样,效果很好)。仅在单元格完全完成后显示最终图表不是我想要的。 我什至尝试在每个plot()等之后显式添加draw()函数。它们都不起作用。想知道如何在IPython Notebook中的一个单元格中通过for / while循环动态更新绘图。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.