matplotlib 高亮显示X轴中的特定值

ekqde3dh  于 2023-05-18  发布在  其他
关注(0)|答案(2)|浏览(200)

我想在Matplotlib中突出显示x轴上的特定值。

list1=[1,2,3,4,5,6,7,8,9] - xaxis values 
list2=[1,2,23,4,5,6,7,8,9] - y-axis values 
list3=[2,3,6,7]

plt.plot(list1,list2)
plt.show()

我想突出显示xaxis标签及其相应的值,如红色/绿色或任何颜色,只有在list 1中出现list 3值时

llew8vvj

llew8vvj1#

独立于轴标签的一个选项可以是为目标值绘制标记:

import numpy as np

m = np.isin(list1, list3)

plt.plot(list1, list2)
plt.plot(np.array(list1)[m], np.array(list2)[m], ls='', marker='x')

输出:

如果您还需要标签:

m = np.isin(list1, list3)

ax = plt.subplot()
ax.plot(list1, list2)
ax.plot(np.array(list1)[m], np.array(list2)[m], ls='', marker='x')

S = set(list3)
for tick in ax.get_xticklabels():
    if int(tick.get_text()) in S:
        tick.set_color('r')

输出:

4urapxun

4urapxun2#

您可以尝试使用matplotlib.pyplot.annotateaxvspan。这是我能想到的三种可能的解决方案。

import matplotlib.pyplot as plt
list1=[1,2,3,4,5,6,7,8,9] #- xaxis values 
list2=[1,2,23,4,5,6,7,8,9] #- y-axis values 
list3=[2,3,6,7]

plt.plot(list1,list2)

for value in list3:
    index = list1.index(value)
    x = list1[index]
    y = list2[index]
    plt.annotate("X",(x,y),xytext=(x-.1,y-.25), color="red")
    plt.annotate("X",(x,y),xytext=(x-.1,-0.5), color="red")
    plt.axvspan(list1[index]-.1, list1[index]+.1, alpha=0.3, color="green")
plt.show()

在本例中,在xytext中,我减去0.10.25(或-0.5)只是为了更好地重叠“X”,因为这个方法用于文本注解。在axvspan的情况下,我使用了+/-0.1的着色范围。
希望有帮助!

相关问题