datetime - 散点图的不同颜色渐变取决于时间(Matplotlib)
问题描述
我有一个形状如下图的数据集。
import pandas as pd
catalog=pd.read_table("Catalog/MainshockCatalog.txt", sep="\t",
names=["Year", "Month", "Day", "Hour", "Min", "Sec", "Lat",
"Lon", "Depth", "Mag"])
catalog
我使用 DataFrame 绘制了每个事件的地图,Axes3D
坐标以列Lat
、、Lon
和Depth
的catalog
形式给出。
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig=plt.figure(figsize=(30, 20))
ax=fig.add_subplot(111, projection='3d')
x=catalog["Lat"]
y=catalog["Lon"]
z=-catalog["Depth"]
ax.scatter(x, y, z, c='k', marker='o', s=50, alpha=0.1, facecolors='none')
ax.scatter(x[0], y[0], z[0], c='b', marker='*', s=1500, label="$M_L$ 5.4 Mainshock")
ax.scatter(x[2395], y[2395], z[2395], c='r', marker='*', s=1500, label="$M_L$ 4.6 Aftershock")
ax.set_xlabel('Latitude ($^\circ$)', fontsize=30, labelpad=30)
ax.set_ylabel('Longitude ($^\circ$)', fontsize=30, labelpad=30)
ax.set_zlabel('Depth (km)', fontsize=30, labelpad=20)
ax.set_zticklabels(['8','7','6','5','4','3','2'])
ax.xaxis.set_tick_params(labelsize=20)
ax.yaxis.set_tick_params(labelsize=20)
ax.zaxis.set_tick_params(labelsize=20)
plt.legend(prop={'size': 30})
plt.show()
在这个图中,每个点的颜色都是相同的。但是,我希望它与渐变平滑不同,因为相关时间(Year
, Month
, Day
, Hour
, Min
, Sec
)随着颜色条的增加而增加。该示例如下所示(尽管颜色会随着深度而变化,而不是此示例的时间)。
解决方案
我一直在做一些测试,我已经让它工作了。
- 在您的数据框上创建一个新列,其中包含格式
catalog
的时间信息。datetime
为此,请使用pd.to_datetime
:
collect['DateHour'] = pd.to_datetime(collect['Year'].astype(str) \
+ '/' + collect['Month'].astype(str) + '/' + \
collect['Day'].astype(str) \
+ 'T' + collect['Hour'].astype(str)+ ':' + collect['Min'].astype(str) \
':' + collect['Sec'].astype(str))
2A。您可以使用此新列将其直接绘制为颜色,方法是在函数的c
参数中指示它ax.scatter
,但它可能不会形成非常漂亮的颜色条。
2B。或者,如果您想要一个 colobar,例如指示特定日期时间的天数差异(例如您在数据中的第一个日期),您可以通过简单地将collect['DateHour']
列与日期的差异创建一个新列 -时间实例正确格式化(或取自collect['DateHour']
),然后将时间增量转换为所需的单位以测量时间增量。您可以在此处查看有关如何转换为方便的时间度量的一些示例。timedelta64
在此示例中,它转换为天数:
collect['dt_days'] = (collect['DateHour']-pd.to_datetime('2002-02-03T13:56:03.172')) \
/ np.timedelta64(1, 'D')
3B。c
通过在您的参数中指明来使用此列ax.scatter
推荐阅读
- html - 在 Wordpress 中集成代码片段(Html 和 Css)
- reactjs - 停留在显示更新的数组数据
- r - 如何在散点图矩阵中留下具有非显着值的空白单元格?
- c# - claimprincipal 的名字和姓氏
- java - 如何在 mockito junits 中覆盖 arrayList 中的方法
- python - 如何在excel状态处于编辑或进入模式时运行excel宏?
- angular - Angular 库没有更新其变量
- python - 如何在拟合我的估计器之前使用 sklearn RFECV 选择最佳特征以传递给降维步骤
- image - 无法使用img绑定vue加载图像
- c# - 验证有效,但未显示消息