Python Matplotlibs按条件在X轴上设置标签/标记

时间:2019-02-09 12:22:02

标签: python pandas matplotlib graph visualization

我有剧情:

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()

谢谢!

1 个答案:

答案 0 :(得分: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