【问题标题】:Python Scatter Plot with Multiple Y values for each XPython 散点图,每个 X 有多个 Y 值
【发布时间】:2015-12-15 03:03:13
【问题描述】:

我正在尝试使用 Python 创建一个散点图,其中包含两个 X 类别“cat1”“cat2”,每个类别都有多个 Y 值。如果每个 X 值的 Y 值的数量相同,我可以使用以下代码使其工作:

    import numpy as np
    import matplotlib.pyplot as plt

    y = [(1,1,2,3),(1,1,2,4)]
    x = [1,2]
    py.plot(x,y)
    plot.show()

但是一旦每个 X 值的 Y 值数量不同,我就会收到错误消息。例如这不起作用:

    import numpy as np
    import matplotlib.pyplot as plt

    y = [(1,1,2,3,9),(1,1,2,4)] 
    x = [1,2]
    plt.plot(x,y)
    plot.show()
    #note now there are five values for x=1 and only four for x=2. error

如何为每个 X 值绘制不同数量的 Y 值,如何将 X 轴从数字 1 和 2 更改为文本类别“cat1”和“cat2”。我将不胜感激任何帮助!

这是我正在尝试制作的情节类型的示例图像:

http://s12.postimg.org/fa417oqt9/pic.png

【问题讨论】:

  • 您如何看待这种情况?你可以为你想要的情节制作一个草稿吗?也许您想添加一些np.nan
  • 我在原始帖子中添加了一张我希望制作的情节类型的图片。

标签: python matplotlib plot


【解决方案1】:

如何为每个 X 值绘制不同数量的 Y 值

只需分别绘制每个组:

for xe, ye in zip(x, y):
    plt.scatter([xe] * len(ye), ye)

以及如何将 X 轴从数字 1 和 2 更改为文本类别“cat1”和“cat2”。

手动设置刻度和刻度标签:

plt.xticks([1, 2])
plt.axes().set_xticklabels(['cat1', 'cat2'])

完整代码:

import matplotlib.pyplot as plt
import numpy as np

y = [(1,1,2,3,9),(1,1,2,4)]
x = [1,2]

for xe, ye in zip(x, y):
    plt.scatter([xe] * len(ye), ye)

plt.xticks([1, 2])
plt.axes().set_xticklabels(['cat1', 'cat2'])

plt.savefig('t.png')

【讨论】:

  • 所以我认为真的没有直接的方法来为单个自变量绘制因变量数组吗?
【解决方案2】:

为了回应 javadba 的评论,我能够使用 matplotlib 为单个自变量(日期)绘制多个因变量(新的 covid 案例)。

plt.xticks(rotation=90)
plt.scatter(x=dates_uk[::5], y=cases_uk[::5])
plt.scatter(x=dates_us[::5], y=cases_us[::5])
classes = ['UK New Cases', 'US New Cases']
plt.legend(labels=classes)
plt.show()

Image of what the code shows (not enough reputation to show image)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 2020-11-05
    • 2020-06-26
    • 2021-01-25
    相关资源
    最近更新 更多