在matplotlib中使用标记作为条件

2 投票
1 回答
739 浏览
提问于 2025-04-29 08:00

我遇到了一个问题。我在用stem函数画图。我的问题是,在变量values中有很多零值。这些零值在我画的图下面形成了一条红线。请问有没有办法在值为零的时候不显示标记呢?谢谢。

keys = list(dictionary.keys())
values = list(dictionary.values())
plt.stem(keys,values,'-ro')
plt.show()

enter image description here

暂无标签

1 个回答

3

有一种方法可以做到这一点(我不知道这是不是matplotlib的标准做法):

  • 首先,过滤掉零值
  • 把格式分成两个关键词,这样就可以阻止底部的圆圈被绘制出来
  • 然后进行绘图
import matplotlib.pyplot as plt
import random
dictionary = {i: random.choice([0] * 100 + list(range(100))) for i in range(100)}
new_dict = {i: j for i, j in dictionary.items() if j}
keys = list(new_dict.keys())
values = list(new_dict.values())

plt.stem(keys, values, markerfmt='ro', linefmt='-r')
plt.show()

结果:

在这里输入图片描述

撰写回答