我正在尝试使用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"。我非常感谢任何帮助!
以下是我想要制作的情节类型的示例图片:
答案 0 :(得分:20)
如何为每个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')
答案 1 :(得分:0)
为了回应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)