首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Matplolib缩放部分情节

如何用Matplolib缩放部分情节
EN

Stack Overflow用户
提问于 2016-01-22 17:34:44
回答 2查看 15.7K关注 0票数 1

我想放大,例如,情节的中心部分,但我有一些问题。我想做这样的事情,但只有简单的行。我怎么能这么做?

我有这样一段代码:

代码语言:javascript
复制
import matplotlib.pyplot as plt
import pickle
from mpl_toolkits.axes_grid1.inset_locator import zoomed_inset_axes
from mpl_toolkits.axes_grid1.inset_locator import mark_inset
import numpy as np

fig, ax = plt.subplots(figsize=[5,4])
extent = (0, 100, 0, 50)
xx = np.linspace(0, 100, 1000)
Z2 = [np.sin(x) for x in xx]
ax.imshow(Z2, extent=extent, interpolation="nearest",
          origin="lower")
axins = zoomed_inset_axes(ax, 6, loc=1) # zoom = 6
mark_inset(ax, axins, loc1=2, loc2=4, fc="none", ec="0.5")

plt.draw()
plt.show()

Python说:

代码语言:javascript
复制
/usr/bin/python2.7 "/home/kenenbek/Documents/Pycharm Projects/PycharmProjects/Multi-Agent/vizualization.py"
/usr/local/lib/python2.7/dist-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.
  warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')
Traceback (most recent call last):
  File "/home/kenenbek/Documents/Pycharm Projects/PycharmProjects/Multi-Agent/vizualization.py", line 55, in <module>
    origin="lower")
  File "/usr/local/lib/python2.7/dist-packages/matplotlib/__init__.py", line 1812, in inner
    return func(ax, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/matplotlib/axes/_axes.py", line 4947, in imshow
    im.set_data(X)
  File "/usr/local/lib/python2.7/dist-packages/matplotlib/image.py", line 449, in set_data
    raise TypeError("Image data can not convert to float")
TypeError: Image data can not convert to float
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-22 18:10:00

是的,你可以用一个不是图像的情节来做。以检查这条柱子为例。

在您的例子中,我认为问题在于试图将列表绘制成图像。

检查此代码是否有一个适用于imshowcountourf (此处使用的代码)的示例。

代码语言:javascript
复制
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1.inset_locator import zoomed_inset_axes
from mpl_toolkits.axes_grid1.inset_locator import mark_inset
import numpy as np

fig, ax = plt.subplots(figsize=(5,4))
extent = (0, 100, 0, 50)
x, y = np.mgrid[-5:5:100j, -5:5:100j]
z = np.sin(2*x)*np.sin(y**2)
ax.contourf(x, y, z, cmap="YlGnBu_r")
axins = zoomed_inset_axes(ax, 2, loc=1)
axins.contourf(x, y, z, cmap="YlGnBu_r")
axins.set_xlim(1, 2)
axins.set_ylim(1, 2)
plt.xticks(visible=False)
plt.yticks(visible=False)
mark_inset(ax, axins, loc1=2, loc2=4, fc="none", ec="0.5")
plt.draw()
plt.show()

票数 6
EN

Stack Overflow用户

发布于 2016-01-22 18:28:56

我不太确定你是否想要绘制一个图像,或轮廓。但是,这里是ndarray类型数据的版本。通过执行image = numpy.genfromtxt(fname=file),您可以轻松地将任何只有单通道(亮度)值的文本图像转换为ndarray。我的代码很快就从基地图内嵌定位器派生出来了。

代码语言:javascript
复制
    import matplotlib.pyplot as plt
    from mpl_toolkits.axes_grid1.inset_locator import zoomed_inset_axes
    from mpl_toolkits.axes_grid1.inset_locator import mark_inset
    from scipy import misc
    fig = plt.figure()
    ax = fig.add_subplot(111)

    image = misc.ascent()

    ax.imshow(image,extent=[0,512,0,512], aspect=(1))

    axins = zoomed_inset_axes(ax, 5, loc=1)
    axins.imshow(image, extent=[0,512,0,512],aspect=(1))
    axins.set_xlim(150, 200)
    axins.set_ylim(120, 170)
    plt.xticks(visible=False)
    plt.yticks(visible=False)

    mark_inset(ax, axins, loc1=2, loc2=4, fc="none", ec="0.5")
    plt.draw()
    plt.show()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34952752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档