手机上可以运行python画图_使用适用于Visual Studio的Python工具在Visual Studio中使用Matplotlib进行绘图...

我不熟悉将PTVS用于我的Python代码。我以前使用过Spyder和Anaconda发行版。这是我遇到的问题。

我正在尝试创建两个图,并同时在单独的窗口中显示它们。一个简单的例子是。

1

2

3

4

5import matplotlib.pyplot as plt

plt.plot([1,2,3,4,5])

plt.show()

plt.plot([2,2,2,2,2])

plt.show()

但是除非我关闭第一个图,否则第二个图不会显示。同样,对于较大的脚本,如果不关闭绘图,则plt.show()之后的其余代码块也不会执行。我尝试在没有调试的情况下执行,但无法正常工作。但是,当我在Ipython交互式窗口中运行相同的代码时,所有代码都将执行,并且我可以将两个图视为内联,但这不是我想要的。我希望所有代码都能在不同的窗口中根据需要创建尽可能多的绘图,而又不会像关闭该绘图以供其余代码运行那样打扰。我仍然可以在Spyder中完成此操作,但是我想完全切换到Visual Studio,这个问题困扰着我。

任何帮助,将不胜感激。提前致谢。

现在我不知道这在VS中如何工作,但是每当我必须在交互式窗口中制作多个图(不保存它们)并且想将所有图一起显示时,这就是我要做的:

1

2

3

4

5fig, ax = plt.subplots()

ax.plot([1,2,3,4,5])

fig1, ax1 = plt.subplots()

ax1.plot([1,2,3,4,5])

plt.show()

请注意,plt.show()之后,您将被卡在原位(静止)。要拥有一个不会阻塞其余代码的交互式窗口,您必须使用IPython或其他启用异步绘图和计算的工具。但是,直接从Python解释器开始,您将不得不等到终止该行。

此外,您可以先执行plt.ion()来打开交互模式。这样可以直接查看您的绘图,在您发出与其相关的命令后,该视图会更新。

我相信这是您要查找的实际命令。这是手册

从来都不知道#ion方法,它非常有用。谢谢。

@ erik-e是的。但是,这有些棘手,因为有时情节无法正确更新。我有一段时间没有使用它,也许现在更好了。

坦斯克希望得到答复。我正在使用的交互式窗口已经是Ipyhton。我没有内联图的问题,当我想在单独的窗口而不是内联窗口上显示图时,会出现我的问题。在我关闭弹出的第一个绘图窗口之前,其余代码不会执行。

@kdemirtas_是IPython还是IPython Notebook?因为那两个阿伦必定是一样的。如果您使用了IPython Notebook魔术,则可能无法想象。如果您尚未在该笔记本上内联任何内容,则该功能仍应可以正常工作。如果需要更详细的帮助,请发布更详细的问题,包括最少的工作示例。

@ljetibo是Visual Studio中的IPython Python REPL。当我在脚本的开头添加plt.ion()时,如果我尝试在IPython交互式窗口中执行脚本,Python和Visual Studio就会崩溃。我猜问题是特定于Visual Studio的,因为使用Spyder对此没有任何问题。我想切换到Visual Studio,但无论如何我还是会坚持使用Spyder。感谢您的回答。

@kdemirtas_啊,是的。那很可能是您的问题。 IPython REPL最有可能设计为与标准IPython Notebook所做的%pylab魔术相同。基本上,它会执行from pylab import *(然后执行其他操作,例如拦截调用和内联图形等。),并且并未设计为按您想要的方式使用。如果您启动"普通" python ide,则plt.ion()应该会按预期工作。我建议您使用virtualenv弄湿您的脚趾,我相信这将使您从IPy中获得最大收益(因为这两个示例都适用于我的win7 venv)。祝你好运。

如果您使用ion,则可能应该为REPL禁用IPython模式-这将关闭绘图内联等。

我没有在Visual Studio中完成此操作,但是通过Matplotlib,您可以对show使用非阻塞调用。 draw方法不会阻塞,但是如果您不通过执行show结束调用,则图形窗口将立即关闭。

1

2

3

4

5

6

7

8

9

10import matplotlib.pyplot as plt

plt.figure(1)

plt.plot([1,2,3,4,5])

plt.show(block=False)

# Create a new figure to show the extra information.

# http://matplotlib.org/users/pyplot_tutorial.html#working-with-multiple-figures-and-axes

plt.figure(2)

plt.plot([2,2,2,2,2])

plt.show()

这是关于同一主题的一个相关问题。

我个人使用subplots,如matplotlib示例所示。

您好@ erik-e,不幸的是,当我使用draw方法时,两个图都在同一图形上显示为两条具有不同颜色的线。我想每个图都有一个窗口。

啊,对不起,我误会了。我将更新答案以显示两个数字,这两个数字将在单独的窗口中打开。更新后的答案可能不适用于所有版本的python / matplotlib。

您是要在自己的脚本中还是在Python Interactive窗口中进行这项工作?

如果是后者,则应在工具->选项-> Python工具->交互式Windows->交互模式(默认为"标准";将其更改为" IPython")中为其启用IPython模式。如果您安装了多个安装,则在"显示设置"组合框中选择了正确的Python)。然后您根本不需要plt.show,因为plt.plot将立即在"交互"窗口中直接内联显示绘图。

感谢您的回答,帕维尔。我正在尝试使用自己的脚本进行操作。您的回复有效,但这不是我想要的。我不希望该图以行方式显示。我希望将其显示为单独的窗口。

我建议在这种情况下使用子图方法,如另一个答案所述。

我可以建议您使用基于类似原因的开源工具。我想在调试时看到一个接一个的图,而不用关闭窗口或特定环境...

这个答案并不能直接帮助您使用Matplotlib,而是提出了解决相同问题的另一种方法。我在Matplotlib或IPython和类似工具中发现的问题是,它们通常非常局限于特定环境(例如您的情况下,IDE)。

而且这些工具通常很难控制到您自己的显示要求(或需要很多时间)。

HypnoLog可以帮助您从Python或任何其他语言中绘制任何数据。它将在网络浏览器中,在一个页面中一个接一个地显示绘图(如日志)。由于HypnoLog使用浏览器显示图,因此您可以轻松地使用网络上其他可用的任何其他工具来显示图或创建自己的图。

专门针对Python,已经有语言包装器,请参见HypnoLog-Python。要绘制数字数组,您可以使用内置的可视化plot。

这在Python中是这样的:

1

2import hypnolog as HL

HL.log([1,2,3,4,5], 'plot');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值