为了账号安全,请及时绑定邮箱和手机立即绑定

将辅助独立轴添加到颜色条图中

将辅助独立轴添加到颜色条图中

跃然一笑 2023-12-05 15:07:01
我尝试将辅助 x 轴添加到图的顶部作为 nm 比例,可以使用相关函数(例如 nm = 495.04-x*0.059)从像素中获得该比例,是否有任何想法如何做到这一点,我尝试过多次但失败了...谢谢代码:import osimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom matplotlib import cmdata = pd.read_csv('BS3053_BFI.dat', sep='.', delimiter='\t',engine = 'python', skiprows=0, header=None)  data = pd.DataFrame(data).transpose()pixel_x = data.shape[1]  # pixels in x directionpixel_y = data.shape[0]  # pixels in y directionfig = plt.figure()ax1 = fig.add_subplot(111)im = ax1.imshow(data, cmap=plt.cm.gnuplot2,extent=[0,1024,257,0],interpolation=None)# ,,ax1.set_xlabel('Pixel', fontsize=12)[![enter image description here][1]][1]ax1.set_ylabel('CCD height', fontsize=12)ax1.set_ylim([0, 257])ax1.set_yticklabels([])ax1.tick_params(direction='in',axis='both', length=.1)ax1.text(0,259, r'BS3053, Slit width 70 $\mu m$', fontsize=10)# create an axes on the right side of ax. The width of cax will be 5%# of ax and the padding between cax and ax will be fixed at 0.05 inch.divider = make_axes_locatable(ax1)cax = divider.append_axes("right", size="4%", pad=0.05)plt.colorbar(im, cax=cax);plt.show()
查看完整描述

1 回答

?
侃侃尔雅

TA贡献1801条经验 获得超15个赞

有时候,一种简单的思维方式可以让你的生活变得轻松……它已经解决了。


'''


import os

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

from matplotlib import cm

from mpl_toolkits.axes_grid1 import make_axes_locatable 

from matplotlib.ticker import AutoLocator



data = pd.read_csv('BS2350_slit_60um.dat', sep='.', delimiter='\t',engine = 'python', skiprows=0, header=None)  

data = pd.DataFrame(data).transpose()

pixel_x = data.shape[1]  # pixels in x direction

pixel_y = data.shape[0]  # pixels in y direction

fig = plt.figure(figsize=(6.4, 6.4))

ax = fig.add_subplot(111)

ax.set_aspect('auto')

im = ax.imshow(data, cmap=plt.cm.gnuplot2,aspect='equal',extent=[0,1024,257,0],interpolation=None)# ,,

ax.set_xlabel('Pixel', fontsize=12)

ax.set_ylabel('CCD height', fontsize=12)

ax.set_ylim([0, 257])

#ax.set_xticklabels([])

ax.set_yticklabels([])

ax.tick_params(direction='in',axis='both', length=.1)

#ax.text(0,259, r'slit width, 40 $\mu m$, minimum slit height', fontsize=10)

#print(data[1][:])


pixel = np.linspace(0,1024)

def pixelTonm(pixel):

    nm = 495.04-pixel*0.059

    return nm 

def nmTopixel(nm):

    pixel = (495.04-nm) / 0.059

    return pixel

    

ax2 = ax.secondary_xaxis('top', functions=(pixelTonm,nmTopixel))   

ax2.set_xlabel('Wavelength / nm', fontsize=12)

ax2.tick_params(direction='out',axis='x', length=2)


# create an axes on the right side of ax. The width of cax will be 5%

# of ax and the padding between cax and ax will be fixed at 0.05 inch.

divider = make_axes_locatable(ax)

cax = divider.append_axes("right", size="2.5%", pad=0.05)

plt.colorbar(im, cax=cax);

plt.savefig('slit_40um_rf_.jpg') [![Afert adding the second axis on the top, and how it looks like][1]][1]

plt.show()

'''


查看完整回答
反对 回复 2023-12-05
  • 1 回答
  • 0 关注
  • 55 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信