小编Bor*_* L.的帖子

使用subplot2grid时如何共享

我是最近转换为Python的Matlab用户.我自己管理的大多数Python技能,但是通过绘图,我已经碰壁了,需要一些帮助.

这就是我要做的......

我需要制作一个由3个子图组成的图形,其中包含以下属性:

  • 子图布局是311,312,313
  • 312和313的高度约为311的一半
  • 所有子图共享共同的X轴
  • 子图之间的空间为0(它们在X轴上相互接触)

顺便说一下,我知道如何制作所有这些,只是在一个图中.这就是我现在面临的问题.

例如,这是我理想的子图布局:

import numpy as np
import matplotlib.pyplot as plt

t = np.arange(0.0, 2.0, 0.01)

s1 = np.sin(2*np.pi*t)
s2 = np.exp(-t)
s3 = s1*s2

fig = plt.figure()
ax1 = plt.subplot2grid((4,3), (0,0), colspan=3, rowspan=2)
ax2 = plt.subplot2grid((4,3), (2,0), colspan=3)
ax3 = plt.subplot2grid((4,3), (3,0), colspan=3)

ax1.plot(t,s1)
ax2.plot(t[:150],s2[:150])
ax3.plot(t[30:],s3[30:])

plt.tight_layout()

plt.show()
Run Code Online (Sandbox Code Playgroud)

注意不同子图的x轴是如何未对齐的.我不知道如何在这个图中对齐x轴,但是如果我做这样的事情:

import numpy as np
import matplotlib.pyplot as plt

t = np.arange(0.0, 2.0, 0.01)

s1 = np.sin(2*np.pi*t)
s2 = np.exp(-t)
s3 = s1*s2

fig2, (ax1, …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

23
推荐指数
1
解决办法
1万
查看次数

如何通过键盘输入关闭python图?

我正在尝试编写一个python程序,它显示无限时间的数字,并在按下任何键盘键后关闭它.

实际上,python程序应该像这个Matlab代码一样:

t = 0:0.01:2;
s = sin(2 * pi * t);

plot(t,s)

pause
close
Run Code Online (Sandbox Code Playgroud)

在python中,我能够绘制图形,但键盘输入后没有任何反应.

import numpy as np
import matplotlib.pyplot as plt

t = np.arange(0.0, 2.0, 0.01)
s = np.sin(2*np.pi*t)

#plt.ion()
fig = plt.figure()
plt.plot(t,s)
#plt.show()
plt.draw()

raw_input("PRESS ANY KEY TO CONTINUE.")
plt.close(fig)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我观察到plt.close(fig)它没有做任何事情plt.show().但是,当我使用时plt.draw(),plt.close(fig)正在关闭数字.然而,当我添加raw_input("PRESS ANY KEY TO CONTINUE.")到我的程序中时,该图形根本没有出现.

我究竟做错了什么?

我也试过试验plt.ion(),但没有成功.

python matplotlib figure

13
推荐指数
2
解决办法
1万
查看次数

如何在熊猫中创建叠加条形图

在更新我早期的一些代码以使用 pandas.DataFrame 时,我遇到了以下问题......

这是我的原始代码将创建的参考图:

import pandas as pd
import matplotlib.pyplot as plt

a = range(1, 25)
b = a
c = [x+2 for x in b]
d = [x*2 for x in c]

plt.bar(a, d)
plt.bar(a, c)
plt.bar(a, b)
plt.show()
Run Code Online (Sandbox Code Playgroud)

参考图

问题定义:

我想使用 pandas.DataFrame 内置功能创建这个非常相同的图。准确地说,只有条形放置是相关的,我对轴刻度的格式/标签不感兴趣。

df = pd.DataFrame({'a': a, 'b': b, 'c': c, 'd': d}, columns=['a', 'b', 'c', 'd'])
df.set_index('a', inplace=True)

df.plot.bar()
plt.show()
Run Code Online (Sandbox Code Playgroud)

第一个熊猫图

无论是默认的熊猫条形图(如上所示)还是添加stacked=True选项(见下文),都不会产生预期的结果。

df.plot.bar(stacked=True)
plt.show()
Run Code Online (Sandbox Code Playgroud)

第二个熊猫图

不幸的是,overlay=True选项不存在。

是否有另一种(最好是优雅的)方法来达到预期的结果?

如果没有其他可用的,我将只修改 pandas.DataFrame 值(即从彼此减去列),然后使用stacked=True选项。在我实施之前,我期待着看到您的建议......

python plot pandas

9
推荐指数
1
解决办法
4580
查看次数

除了NumPy和SciPy之外,还需要一个用于数字和科学计算的python模块

简单的操作,例如舍入数字,创建增加的向量等,在python中无法可靠地完成(参见下面的示例).python社区给出的常见解释是浮点精度.

Python 2.7.11 (default, Sep 29 2016, 13:33:00) 
[GCC 5.3.1 20160406 (Red Hat 5.3.1-6)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> numpy.round(2.5)
2.0
>>> numpy.round(3.5)
4.0
>>> numpy.arange(89,90,0.1)
array([ 89. ,  89.1,  89.2,  89.3,  89.4,  89.5,  89.6,  89.7,  89.8,  89.9])
>>> numpy.arange(89+0.1,90,0.1)
array([ 89.1,  89.2,  89.3,  89.4,  89.5,  89.6,  89.7,  89.8,  89.9,  90. ])
>>> numpy.arange(19,20,0.1)
array([ 19. ,  19.1,  19.2,  19.3,  19.4,  19.5,  19.6,  19.7,  19.8,  19.9])
>>> numpy.arange(19+0.1,20,0.1)
array([ 19.1, …
Run Code Online (Sandbox Code Playgroud)

python precision matlab numpy rounding

-6
推荐指数
1
解决办法
112
查看次数

标签 统计

python ×4

matplotlib ×2

figure ×1

matlab ×1

numpy ×1

pandas ×1

plot ×1

precision ×1

rounding ×1