蟒matplotlib组标签/蜱在由条件X轴

问题描述 投票:0回答:1

我有情节:

enter image description here

X轴的,我想更改标签/蜱所以会有一个只有当一个蓝色片段结束或开始,与价值

X / 266.6667

因此,如果我们看一下在第一时间蓝线开始,x的值是1500,所以我要添加值15000 / 266.667 x轴。整体有4个蓝色段所以应该有在x轴(每蓝色段开始时间或结束其中一个)8个蜱

我画了使用matplotlib此图:

import matplotlib.pyplot as plt

data = np.array(vec)
df = pd.DataFrame({'data': data}).reset_index()
df['colors'] = np.where(data < 1, 'red', 'blue')
plt.scatter(df['index'], df['data'], c=df['colors'])
plt.show()

谢谢!

python pandas matplotlib graph visualization
1个回答
1
投票

通过266.6667划分数据来得到它想要的单位。

x /= 266.6667

然后找到你想要通过标记点

ticks = x[:-1][np.diff((y > 1).astype(int)) > 0]

完整的例子:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0,70000,23)
y = np.array([0,0,0,2,3,5,4,3,0,0,0,0,2,3,5,5,3,0,0,0,0,4,3])

x /= 266.6667


fig, ax= plt.subplots()
ax.scatter(x,y, c=(y > 1), cmap="bwr_r")

ticks = x[:-1][np.diff((y > 1).astype(int)) > 0]
ax.set_xticks(ticks)

plt.show()

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.