簡體   English   中英

(python)在 3D 散點圖 plot 和 matplotlib 中按日期添加顏色條

[英](python) Adding a colorbar by the dates of points in a 3D scatter plot with matplotlib

我正在嘗試 3D plot 中某個地區的 plot 地震,用顏色作為顯示事件時間/日期的方式。 數據點的顏色准確,但是,當我 plot 顏色條時,它只顯示 0.0 到 1.0。 如何讓顏色條將日期顯示為 label?

我的dates變量是“YYYY-MM-DD”格式的日期列表。

%matplotlib notebook
from mpl_toolkits.mplot3d import axes3d

fig = plt.figure(figsize=(8,8))
ax = fig.add_subplot(projection='3d')

ax.scatter(longitude, latitude, -depth, c=mdates.date2num(dates), cmap='magma')
fig.colorbar(mpl.cm.ScalarMappable(cmap='magma'))
plt.show()

由於您沒有提供數據,我不得不隨機生成它。

from mpl_toolkits.mplot3d import axes3d
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
import matplotlib as mpl
from matplotlib.colors import Normalize
import numpy as np

# generate random data and dates
longitude = np.random.uniform(0, 1, 100)
latitude = np.random.uniform(0, 1, 100)
depth = np.random.uniform(0, 1, 100)

dates = []
for i in range(1, 13):
    for j in range(1, 25):
        if j < 10: n = "0" + str(j)
        else: n = j
        if i < 10: m = "0" + str(i)
        else: n = i
        dates.append("2022-{}-{}".format(m, n))

fig = plt.figure(figsize=(8,8))
ax = fig.add_subplot(projection='3d')

colors = mdates.date2num(dates[:100])
ax.scatter(longitude, latitude, -depth, c=colors, cmap='magma')
norm = Normalize(vmin=colors.min(), vmax=colors.max())

# choose a proper number of ticks to be shown on the colorbar
N = 5
ticks = np.linspace(colors.min(), colors.max(), N)
# convert the tick back to date format
labels = [mdates.num2date(t).strftime("%Y-%m-%d") for t in ticks]
cb = fig.colorbar(
    mpl.cm.ScalarMappable(norm=norm, cmap='magma'),
    ticks=ticks,
    ax=ax,
    label="Date"
)
cb.ax.set_yticklabels(labels)
plt.show()

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM