我正在绘制某些可能会出现缺失值的折线图。这些针对星期几绘制某些值。不幸的是,我发现很难处理丢失的值,因为如果丢失了这些值,则绘图(例如:使用matplotlib)不会显示相应的x轴标签,这非常重要。

我尝试过使用matplotlib,就像这里所说的https://stackoverflow.com/a/51614698/2602324一样。我还尝试了Seaborn的散景图。在所有这些情况下,库都要求x轴和y轴的值的长度应相同。

我尝试了一些方法:


matplotlib,seaborn


import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

f, axes = plt.subplots(1, 1)
a = [None, 585, None, None, None, None, None]
b = [None, None, None, 50, None, None, None]
x_ticks = ['1','2','3','4','5','6','7']

sns.lineplot(x_ticks, b, linestyle='-', label='Current Week', marker='^')
sns.lineplot(x_ticks, a, linestyle='-', label='Previous Week', marker='o')

plt.show()


python - python中是否有一个绘图程序包可以处理缺失值,而不会忽略x轴值/标签/比例?-LMLPHP

在这种情况下,会出现诸如x轴标签更改顺序的问题(我认为它是基于y值进行排序的)。而且,没有显示x的值,缺少y值。


散景


from bokeh.plotting import figure, output_file, show

output_file("line.html")

p = figure(plot_width=400, plot_height=400)
a = [nan, 585, nan, nan, nan, nan, nan]
b = [nan, nan, nan, 50, nan, nan, nan]
x_ticks = [1, 2, 3, 4, 5, 6, 7]

# add a line renderer with a NaN
nan = float('nan')

p.line(x_ticks, a, line_width=2)
p.line(x_ticks, b, line_width=2)
p.circle(x_ticks, a)
p.circle(x_ticks, b)

show(p)


python - python中是否有一个绘图程序包可以处理缺失值,而不会忽略x轴值/标签/比例?-LMLPHP

在此,x轴的比例发生变化。也许我需要做一些事情来使标签保持完整,但是即使缺少值,我也需要显示整个标签(x)。我在以上情况下使用的值仅是最有可能发生(但不经常发生)的最坏情况。



由于这项工作已被搁置,我想我将更加明确我实际上要寻找的内容。我想要带有标记的线图,该标记可处理缺失值,而不会以任何方式干扰x的值。

python - python中是否有一个绘图程序包可以处理缺失值,而不会忽略x轴值/标签/比例?-LMLPHP

这样,在最坏的情况下,如果有很多缺失值(这里只有两个值而其余缺失),则仅用标记显示点。否则,应如下所示:
python - python中是否有一个绘图程序包可以处理缺失值,而不会忽略x轴值/标签/比例?-LMLPHP

这里有3个可用值,其余的均缺失。在这两种情况下,x轴的值和顺序都将保留。

附言我使用excel绘制了最后两个图。

最佳答案

matplotlib.axes.Axes.set_xlim有助于强制限制X轴的限制,以及类似地set_ylim限制y轴的限制。这正是我要寻找的。

关于python - python中是否有一个绘图程序包可以处理缺失值,而不会忽略x轴值/标签/比例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57652838/

10-15 00:47