繁体   English   中英

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

[英]Python matplotlibs set labels/ticks in X-axis by condition

我有剧情:

在此处输入图片说明

而且我想更改X轴的标签/标记,因此只有在蓝色段结束或开始时才会有一个,其值为

x / 266.6667

因此,如果我们第一次看蓝线,x的值为1500,所以我想向x轴添加15000 / 266.667。 总体上有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()

谢谢!

将数据除以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()

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM