matplotlib 每个X对应多个Y值的Python散点图

1l5u6lss  于 2023-02-19  发布在  Python
关注(0)|答案(2)|浏览(407)

我尝试使用Python创建一个散点图,其中包含两个X类别“cat 1”和“cat 2”,每个类别都有多个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更改为文本类别“cat 1”和“cat 2”。我将非常感谢任何帮助!
下面是我尝试制作的打印类型的示例图像:
http://s12.postimg.org/fa417oqt9/pic.png

50pmv0ei

50pmv0ei1#

如何为每个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')

t5fffqht

t5fffqht2#

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

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()

相关问题