如何在pylab / pyplot中裁剪极坐标图

伊利亚·舒罗夫(Ilya V. Schurov)

我有一个极坐标图,其theta范围从0到pi / 2,所以整个图都位于第一个四分之一,如下所示:

%pylab inline
X=linspace(0,pi/2)
polar(X,cos(6*X)**2)

完整的极地图,浪费了很多空间
(来源:schurov.com

是否可以通过pyplot或matplotlib裁剪极坐标图,以便仅显示第一个四分之一(因此不会浪费空间)?我想要这样的图片(但要适当缩放):

我想要的地块
(来源:schurov.com

我想通过pyplot做到这一点,因为我有几个像这样的图像,并希望将它们排列成一个大人物(带有子图)。是否有可能?

绍尔施

我建议不要使用polar绘图,而应该设置轴艺术家。这使您可以设置“部分”极坐标图。

该答案基于对第三个示例的调整,该示例来自:axes_grid示例代码:demo_floating_axes.py

import numpy as np
import matplotlib.pyplot as plt

from matplotlib.transforms import Affine2D
import mpl_toolkits.axisartist.floating_axes as floating_axes
import mpl_toolkits.axisartist.angle_helper as angle_helper
from matplotlib.projections import PolarAxes
from mpl_toolkits.axisartist.grid_finder import MaxNLocator

# define how your plots look:

def setup_axes(fig, rect, theta, radius):

    # PolarAxes.PolarTransform takes radian. However, we want our coordinate
    # system in degree
    tr = Affine2D().scale(np.pi/180., 1.) + PolarAxes.PolarTransform()

    # Find grid values appropriate for the coordinate (degree).
    # The argument is an approximate number of grids.
    grid_locator1 = angle_helper.LocatorD(2)

    # And also use an appropriate formatter:
    tick_formatter1 = angle_helper.FormatterDMS()

    # set up number of ticks for the r-axis
    grid_locator2 = MaxNLocator(4)

    # the extremes are passed to the function
    grid_helper = floating_axes.GridHelperCurveLinear(tr,
                                extremes=(theta[0], theta[1], radius[0], radius[1]),
                                grid_locator1=grid_locator1,
                                grid_locator2=grid_locator2,
                                tick_formatter1=tick_formatter1,
                                tick_formatter2=None,
                                )

    ax1 = floating_axes.FloatingSubplot(fig, rect, grid_helper=grid_helper)
    fig.add_subplot(ax1)

    # adjust axis
    # the axis artist lets you call axis with
    # "bottom", "top", "left", "right"
    ax1.axis["left"].set_axis_direction("bottom")
    ax1.axis["right"].set_axis_direction("top")

    ax1.axis["bottom"].set_visible(False)
    ax1.axis["top"].set_axis_direction("bottom")
    ax1.axis["top"].toggle(ticklabels=True, label=True)
    ax1.axis["top"].major_ticklabels.set_axis_direction("top")
    ax1.axis["top"].label.set_axis_direction("top")

    ax1.axis["left"].label.set_text("R")
    ax1.axis["top"].label.set_text(ur"$\alpha$ [\u00b0]")

    # create a parasite axes
    aux_ax = ax1.get_aux_axes(tr)

    aux_ax.patch = ax1.patch # for aux_ax to have a clip path as in ax
    ax1.patch.zorder=0.9 # but this has a side effect that the patch is
                         # drawn twice, and possibly over some other
                         # artists. So, we decrease the zorder a bit to
                         # prevent this.

    return ax1, aux_ax

#
# call the plot setup to generate 3 subplots
#

fig = plt.figure(1, figsize=(8, 4))
fig.subplots_adjust(wspace=0.3, left=0.05, right=0.95)

ax1, aux_ax1 = setup_axes(fig, 131, theta=[0, 90], radius=[0, 1])
ax2, aux_ax2 = setup_axes(fig, 132, theta=[0, 90], radius=[0, 1])
ax3, aux_ax3 = setup_axes(fig, 133, theta=[0, 90], radius=[0, 1])

#
# generate the data to plot
#
theta = np.linspace(0,90) # in degrees
radius = np.cos(6.*theta * pi/180.0)**2.0

# 
# populate the three subplots with the data
#
aux_ax1.plot(theta, radius, 'r')
aux_ax2.plot(theta, radius, 'b')
aux_ax3.plot(theta, radius, 'g')

plt.show()  

您将得到以下情节:

在此处输入图片说明

曲线线性网格上axisartist参考演示提供了一些关于如何使用的附加见解angle_helper特别是关于期望弧度和度数的部分。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何更改julia PyPlot极坐标图中的径向刻度?

来自分类Dev

如何根据平均值绘制pyplot极坐标图

来自分类Dev

如何在matplotlib中设置极坐标图的大小?

来自分类Dev

如何绘制极坐标图?

来自分类Dev

如何解决Scilab中绘制极坐标图的错误

来自分类Dev

如何在ggplot2的坐标极坐标图中将标签中的文本对齐到左侧?

来自分类Dev

如何在极坐标图中使用颜色条?

来自分类Dev

如何在 matplotlib 中计算极坐标图密度

来自分类Dev

如何使极坐标图中的标签不自动拆分?

来自分类Dev

如何更改matplotlib极坐标图的“ r”轴位置?

来自分类Dev

如何清除Highcharts极坐标图中的柱形之间的空白?

来自分类Dev

极坐标图,如何用R来做?

来自分类Dev

如何更改极坐标图上的轴颜色

来自分类Dev

如何使极坐标图中的标签不自动拆分?

来自分类Dev

如何在SAGE中绘制极坐标?

来自分类Dev

gnuplot中的极坐标图

来自分类Dev

如何在极坐标图中(coord_polar)连接geom_line的端点和起点?

来自分类Dev

如何在Matlab极坐标图中更改径向刻度标记?

来自分类Dev

R:如何在极坐标图中添加突出显示的角线?

来自分类Dev

如何在极坐标图中正确显示颜色条(半圆的轮廓图)?

来自分类Dev

如何在极坐标图上删除theta网格和半径网格?

来自分类Dev

如何在极坐标图中的3条线之间填充?

来自分类Dev

如何在极坐标图中(coord_polar)连接geom_line的端点和起点?

来自分类Dev

如何在Matlab极坐标图中更改径向刻度标记?

来自分类Dev

如何在R中的极坐标中添加时间维度?

来自分类Dev

如何在python的极坐标中绘制误差线?

来自分类Dev

在JavaPlot中创建极坐标图

来自分类Dev

密谋:如何为雷达或极坐标图中的不同范围分配背景色?

来自分类Dev

如何删除Highcharts极坐标图中的条形图之间的空白?

Related 相关文章

  1. 1

    如何更改julia PyPlot极坐标图中的径向刻度?

  2. 2

    如何根据平均值绘制pyplot极坐标图

  3. 3

    如何在matplotlib中设置极坐标图的大小?

  4. 4

    如何绘制极坐标图?

  5. 5

    如何解决Scilab中绘制极坐标图的错误

  6. 6

    如何在ggplot2的坐标极坐标图中将标签中的文本对齐到左侧?

  7. 7

    如何在极坐标图中使用颜色条?

  8. 8

    如何在 matplotlib 中计算极坐标图密度

  9. 9

    如何使极坐标图中的标签不自动拆分?

  10. 10

    如何更改matplotlib极坐标图的“ r”轴位置?

  11. 11

    如何清除Highcharts极坐标图中的柱形之间的空白?

  12. 12

    极坐标图,如何用R来做?

  13. 13

    如何更改极坐标图上的轴颜色

  14. 14

    如何使极坐标图中的标签不自动拆分?

  15. 15

    如何在SAGE中绘制极坐标?

  16. 16

    gnuplot中的极坐标图

  17. 17

    如何在极坐标图中(coord_polar)连接geom_line的端点和起点?

  18. 18

    如何在Matlab极坐标图中更改径向刻度标记?

  19. 19

    R:如何在极坐标图中添加突出显示的角线?

  20. 20

    如何在极坐标图中正确显示颜色条(半圆的轮廓图)?

  21. 21

    如何在极坐标图上删除theta网格和半径网格?

  22. 22

    如何在极坐标图中的3条线之间填充?

  23. 23

    如何在极坐标图中(coord_polar)连接geom_line的端点和起点?

  24. 24

    如何在Matlab极坐标图中更改径向刻度标记?

  25. 25

    如何在R中的极坐标中添加时间维度?

  26. 26

    如何在python的极坐标中绘制误差线?

  27. 27

    在JavaPlot中创建极坐标图

  28. 28

    密谋:如何为雷达或极坐标图中的不同范围分配背景色?

  29. 29

    如何删除Highcharts极坐标图中的条形图之间的空白?

热门标签

归档