自带的cmap本身就有反转版本,一般会在色标名称后面加_r,比如
cm=plt.cm.get_cmap('seismic')
它的反转版本就是
cm=plt.cm.get_cmap('seismic_r')
分类: 学习
matplotlib中colorbar的标题
比如有这样的画图语句
sc=plt.scatter(x,y,c=depth,cmap=cm,...)
cbar=plt.colorbar(sc)
cbar.ax.set_ylabel('depth/km')
如何用python判断某点被包含在一个多边形中
参考自/questions/21566610/crop-out-partial-image-using-numpy-or-scipy
判断某点是否处于某个多边形内或边界上在matlab中可以方便地用inpolygon函数达到,python的某些模块中有类似的功能。
import numpy as np
from matplotlib.path import Path
xc = np.array([219.5,284.8,340.8,363.5,342.2,308.8,236.8,214.2])
yc = np.array([284.8,220.8,203.5,252.8,328.8,386.2,382.2,328.8])
xycrop=np.vstack((xc,yc)).T #这里的vstack就是垂直叠加组合形成一个新的数组,T是转置
rnd=np.random.randn(50)*50.0+250.0
rnd=rnd.reshape(25,2)
pth=Path(xycrop,closed=False)
mask=pth.contains_points(rnd) # mask里包含了对应点是否包含在多边形中的逻辑数值
可以用rnd[mask,:]获得包含在多边形内的点,用rnd[~mask,:]获得在外面的点。
perl中快速初始化数组
perl中是否有matlab中类似于zeros那样的可快速初始化数组的语句?答案是有的,可以这么写:
@a=(0) x 50;
即可生成一个1x50的数据为0的数组。
python中时间的快速parse
from dateutil import parser
a=parser.parse('20100101123145')
>>a=datetime(2010,1,1,12,31,45)
python中datetime模块的strftime函数
from dateutil import parser
a=parser.parse('20100101')
如果想获得这个时间的字符串表达,则可用
a.strftime('%Y%m%d')
python中根据某个list排序另一个list
https://s tackoverflow.com
/questions/6618515/sorting-list-based-on-values-from-another-list
比如有如下两个list:
people =['Jim','Pam','Micheal','Dwight']
ages =[27,25,4,9]
按ages排序
方法一:
[x for _,x in sorted(zip(ages,people))]
方法二:
import numpy as np
people=np.array(people)
ages=np.array(ages)
indx=ages.argsort()
sortedpeople=people[indx]
方法三:
sorted_index=sorted(range(len(age)),key=lambda x:people[x])
[people[i] for i in sorted_index]
顺便鄙视一下百度和墙。
matplotlib显示TimesNewRoman
import matplotlib as mpl
mpl.rcParams['font.family']='serif'
mpl.rcParams['font.serif']='Times New Roman'
pandas中的to_datetime
使用这个函数的时候要保证dataframe的列名有year,month,day,hour,minute,second这样的,缩写成yr,mm,dy这样的都不行。
移动pandas的dataframe中不同列的位置
将一个hypodd格式的目录读入进了dataframe,想弄成年、月、日这样的顺序,涉及到重新排列columns的位置,网上建议这么操作newcata=cata[[‘year’,’month’,’day’]]