Matplotlib:生成具有不同比例和反向比例的多个双轴

本尼米尔

我想在两个x和y轴上绘制数据序列,以具有4个不同的轴。首先是x(以eV为单位的能量)与y(归一化的计数)轴,然后是x(与能量成反比的波长)与y(计数)轴。我的代码是:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
from scipy.constants import h, c, e


def E(wavelength):
   return (h*c)/(wavelength*e)

wavelen = np.linspace(800e-9,1600e-9,200)
E_eV = E(wavelen)
loc, scale = 950e-9, 3.0
counts = mlab.normpdf(wavelen,950e-9,100e-9)/100
counts_norm = counts/10000


fig, ax  = plt.subplots()

ax1 = ax
ax2 = ax.twinx()
ax3 = ax.twiny()

plt.ticklabel_format(style='sci', scilimits=(0,0))

ax1.plot(E_eV, counts_norm)
ax1.set_xlim(E(1600e-9),E(800e-9))
ax1.set_ylabel('normalized counts')
ax1.set_xlabel('energy (eV)')
ax2.plot(E_eV, counts)
ax2.set_xlim(E(1600e-9),E(800e-9))
ax2.set_ylabel('counts')
ax3.plot(wavelen*1e9, counts_norm)
ax3.set_xlim(1600,800)
ax3.set_xlabel('wavelength (nm)')
ax3.ticklabel_format(style='plain')


plt.tight_layout()
plt.show()

如您所见,曲线的缩放比例不正确,因此它们重叠并在x方向上具有相同的尺寸。您能帮我如何在顶部为x(波长)轴设置正确的参数吗?

静态空隙

我建议仅在主轴上绘制,然后同步双轴的标签。我编辑了您的示例,以显示如何针对静态图完成此操作。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
from scipy.constants import h, c, e

def E(wavelength):
    return (h*c)/(wavelength*e)
def getWaveLength(energy):
    return (h*c)/(energy*e)
def getCounts(normcounts):
    return normcounts*1000

wavelen = np.linspace(800e-9,1600e-9,200)
E_eV = E(wavelen)
loc, scale = 950e-9, 3.0
counts = mlab.normpdf(wavelen,950e-9,100e-9)/100
counts_norm = counts/10000

fig, ax1  = plt.subplots()

ax2 = ax1.twinx()
ax3 = ax1.twiny()

plt.ticklabel_format(style='sci', scilimits=(0,0))

ax1.plot(E_eV, counts_norm)
ax1.set_xlim(E(1600e-9),E(800e-9))
ax1.set_ylabel('normalized counts')
ax1.set_xlabel('energy (eV)')
ax2.set_ylabel('counts')
ax3.set_xlabel('wavelength (nm)')
ax3.ticklabel_format(style='plain')

# get the primary axis x tick locations in plot units
xtickloc = ax1.get_xticks() 
# set the second axis ticks to the same locations
ax3.set_xticks(xtickloc)
# calculate new values for the second axis tick labels, format them, and set them
x2labels = ['{:.3g}'.format(x) for x in getWaveLength(xtickloc)]
ax3.set_xticklabels(x2labels)
# force the bounds to be the same
ax3.set_xlim(ax1.get_xlim()) 

#same for y
ytickloc = ax1.get_yticks()
ax2.set_yticks(ytickloc)
ax2.set_yticklabels([str(int(y)) for y in getCounts(ytickloc)])
ax2.set_ylim(ax1.get_ylim())

plt.tight_layout()
plt.show()

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Matplotlib:生成具有不同比例和反向比例的多个双轴

来自分类Dev

生成具有交替轴和不同比例的堆叠式多面板图

来自分类Dev

多个Y轴和不同比例的路径

来自分类Dev

如何在一张图中显示具有不同比例轴的多个雷达图?

来自分类Dev

具有不同比例的多线图

来自分类Dev

如何在altair中添加具有不同比例(与y轴平行)的新轴

来自分类Dev

格子:在同一面板中绘制两条具有不同比例和轴的线

来自分类Dev

不同比例的 Matplotlib twinx

来自分类Dev

MATLAB:如何绘制具有不同比例和不同数据集的多个水平条形图?

来自分类Dev

在y轴上创建具有两种不同比例的图表

来自分类Dev

高图-创建具有相同比例轴的图表

来自分类Dev

是否可以在一页上绘制具有不同比例的相同变量的多个直方图?

来自分类Dev

是否可以在一页上绘制具有不同比例的相同变量的多个直方图?

来自分类Dev

具有不同比例的MPandroidchart Double YAxis

来自分类Dev

缩放具有不同比例因子的单个图像

来自分类Dev

Matplotlib:同一轴上的两个图,具有不同的左右比例尺

来自分类Dev

为轴上具有多个比例的图形设置matplotlib高宽比

来自分类Dev

具有R的GGally ggpair的不同图形的不同比例单位

来自分类Dev

在多个轴上具有多个比例的雷达图

来自分类Dev

创建具有不同颜色比例的双色画布

来自分类Dev

不同比例的HOG功能

来自分类Dev

不同比例的图案线

来自分类Dev

在同一图形上绘制具有不同比例的多条线

来自分类Dev

获取具有不同比例的2x2 facet_grid

来自分类Dev

绘制两个具有不同长度的相同比例的系列

来自分类Dev

获取具有不同比例的2x2 facet_grid

来自分类Dev

具有两种不同比例的Highcharts柱形图

来自分类Dev

Matplotlib_Venn,相同比例的多个维恩图

来自分类Dev

如何获得多个具有相同比例的ggplot2 scale_fill_gradientn?

Related 相关文章

  1. 1

    Matplotlib:生成具有不同比例和反向比例的多个双轴

  2. 2

    生成具有交替轴和不同比例的堆叠式多面板图

  3. 3

    多个Y轴和不同比例的路径

  4. 4

    如何在一张图中显示具有不同比例轴的多个雷达图?

  5. 5

    具有不同比例的多线图

  6. 6

    如何在altair中添加具有不同比例(与y轴平行)的新轴

  7. 7

    格子:在同一面板中绘制两条具有不同比例和轴的线

  8. 8

    不同比例的 Matplotlib twinx

  9. 9

    MATLAB:如何绘制具有不同比例和不同数据集的多个水平条形图?

  10. 10

    在y轴上创建具有两种不同比例的图表

  11. 11

    高图-创建具有相同比例轴的图表

  12. 12

    是否可以在一页上绘制具有不同比例的相同变量的多个直方图?

  13. 13

    是否可以在一页上绘制具有不同比例的相同变量的多个直方图?

  14. 14

    具有不同比例的MPandroidchart Double YAxis

  15. 15

    缩放具有不同比例因子的单个图像

  16. 16

    Matplotlib:同一轴上的两个图,具有不同的左右比例尺

  17. 17

    为轴上具有多个比例的图形设置matplotlib高宽比

  18. 18

    具有R的GGally ggpair的不同图形的不同比例单位

  19. 19

    在多个轴上具有多个比例的雷达图

  20. 20

    创建具有不同颜色比例的双色画布

  21. 21

    不同比例的HOG功能

  22. 22

    不同比例的图案线

  23. 23

    在同一图形上绘制具有不同比例的多条线

  24. 24

    获取具有不同比例的2x2 facet_grid

  25. 25

    绘制两个具有不同长度的相同比例的系列

  26. 26

    获取具有不同比例的2x2 facet_grid

  27. 27

    具有两种不同比例的Highcharts柱形图

  28. 28

    Matplotlib_Venn,相同比例的多个维恩图

  29. 29

    如何获得多个具有相同比例的ggplot2 scale_fill_gradientn?

热门标签

归档