python 散点图 自定义x轴标签/经度180到-180连接

最近在做一个散点图,横轴为经度,纵轴为速度,即不是纬度,因此不是那种展现空间关系的。

但是数据的经度为70到180,之后-180到-170这样,因此用正常的方法出图会出现,-180和180的散点无法进行连接。

于是使用python修改标签的办法。首先将横轴的数据即经度的-180~180变为0-360

利用以下函数实现

def changto360(data):
    c = data['lon']
    c[c<0]=c+360
    data['lon']=c
    return data

之后采用以下办法自定义横轴标签

plt.xticks([60,90,120,150,180],#,210
               ['60°E','90°E','120°E','150°E','180°'],#,'150°W'
               fontsize=12)

以下是所有代码,包含字体的大小的定义和副的刻度值

def changto360(data):
    c = data['lon']
    c[c<0]=c+360
    data['lon']=c
    
    c = data['piomas']
    c[c==-1]=np.nan
    data['piomas']=c
    return data


#该程序为了绘制散点图,随着经度变化而变化
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from matplotlib.ticker import MultipleLocator, FormatStrFormatter
fig, host = plt.subplots(figsize=(15, 7), dpi=80)#
fig.subplots_adjust(top=0.8,bottom=0.095,left=0.06,right=0.95)

ship4=pd.read_csv(r"H:\mission\AIS\speed\20_AIS_position_value.csv") #extent_LS.csv
ship4['datetime'] = pd.to_datetime(ship4['datetime'])

ship1=pd.read_csv(r"H:\mission\AIS\speed\2_AIS_position_value.csv") #extent_LS.csv
ship1['datetime'] = pd.to_datetime(ship1['datetime'])

ship2=pd.read_csv(r"H:\mission\AIS\speed\2_back_AIS_position_value.csv") #extent_LS.csv
ship2['datetime'] = pd.to_datetime(ship2['datetime'])

ship3=pd.read_csv(r"H:\mission\AIS\speed\3_AIS_position_value.csv") #extent_LS.csv
ship3['datetime'] = pd.to_datetime(ship3['datetime'])

ship1=changto360(ship1)
ship2=changto360(ship2)
ship3=changto360(ship3)
ship4=changto360(ship4)



plt.scatter(ship1['lon'], ship1['piomas'],label="20210105-20210126",alpha=0.5)
plt.scatter(ship3['lon'], ship3['piomas'],label="20210106-20210128",alpha=0.5)
plt.scatter(ship4['lon'], ship4['piomas'],label="20211224-20210119",alpha=0.5)
plt.scatter(ship2['lon'], ship2['piomas'],label="20210127-20210219",alpha=0.5)
#系统默认为蓝色和橙色
plt.xticks([60,90,120,150,180],#,210
               ['60°E','90°E','120°E','150°E','180°'],#,'150°W'
               fontsize=12)
xminorLocator = MultipleLocator(10) #将x轴次刻度标签设置为10的倍数
host.xaxis.set_minor_locator(xminorLocator)

plt.yticks(fontsize=12)
plt.legend(loc="upper center",bbox_to_anchor=(0.7,1.29),prop={
'weight' : 'normal',
'size'   : 15,
})#在散点图右上角显示名字
#plt.xticks(ticks, [labels], **kwargs)
plt.xlabel('longitude(°)',fontdict={'weight': 'normal', 'size': 16})
#plt.ylabel('ship speed(kn)',fontdict={'weight': 'normal', 'size': 16})
plt.ylabel('PIOMAS sea ice thickness(m)',fontdict={'weight': 'normal', 'size': 16})

plt.show()
plt.savefig(r'H:\mission\plot\scatter_piomas_longitude.png', dpi=300)

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

就是一只白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值