假设一个嵌套的字典,其中第一级是日期,第二级字典将数字作为键,并将与该数字对应的值作为值。我想在每个日期的正值上做一个散点图,而不会丢失作为x轴的日期。我的意思是,如果嵌套字典(一个特定日期)没有正值(全部为零或负值),我不想丢失日期,但没有显示日期的y轴值。
这里有一个工作示例来澄清。我把所有的东西都画在这里。我想在x轴上保持相同的标签和距离,但在y轴上不显示零或负值。在本例中,我不想看到日期'2006-02-03'和'2006-04- 05'上的点。任何帮助将不胜感激。
import matplotlib.pyplot as plt
dictt = {('2005-01-04', '2006-01-04'): {0: 0, 1: 3, 2: -1, 3: 5}, ('2005-02-03', '2006-02-03'): {0: 0, 1: 0, 2: 0, 3: 0},
('2005-03-07', '2006-03-07'): {0: -3, 1: 0, 2: 3, 3: 5}, ('2005-04-06', '2006-04-05'): {0: -2, 1: -3, 2: -1, 3: -2}}
for k in list(dictt.keys()):
for i in range(4):
plt.scatter(k[1], dictt[k[0], k[1]][i])
4条答案
按热度按时间dldeef671#
你更喜欢什么底线?零(我的首选)还是绘制值的最小值?我提供了两种解决方案!
此外,我提供了一个解决方案,它根据 n 参数的值标记点。我认为这是一种进步,你觉得呢?
这是代码,它有点复杂,因为,哦,好吧,你的数据格式很复杂。
rkttyhzu2#
一种方法是使用
ylim()
,然后用白色散射0。以下是ylim()
的文档链接:https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.ylim.html#matplotlib.pyplot.ylim代码看起来像这样:
结果是这样的:
ttcibm8c3#
你的例子与你的描述不一致。
1.如果要清除日期“2006-02-03”和“2006-04- 05”上的点,但保留其他日期上的所有点:
1.如果要清除所有非正数点,同时保留日期刻度标签:
8mmmxcuj4#
在评论中,OP要求一种能够绘制不同颜色的替代方案,即使内部字典中不同元素的数量超过10。作为回答,我建议使用彩色条
这里是生成上面图像的代码--当然,我已经将
dictt
更改为dt
,以便在内部字典中有更多的元素