首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何绘制距离数据的散点图

如何绘制距离数据的散点图
EN

Stack Overflow用户
提问于 2021-05-27 11:21:18
回答 1查看 315关注 0票数 2

我有范围数据,例如,一所教育机构正在为一批在线课程的学生收取费用。

如有1-4名学生参加,费用为每批10000元。

如果5-10名学生参加,费用是每批15000美元。

如有11至20名学生参加,费用为每批22000元。

代码语言:javascript
运行
复制
x = ['1-4','5-10','11-20']
y = [10000,15000,20000]

X和y对于matplotlib来说是我的xlable和ylable。在这种情况下,如何将x的数据和绘图转换为xlable。

EN

回答 1

Stack Overflow用户

发布于 2021-06-06 20:42:31

可以将xy数组转换为可用于创建散点图的数值数组:

  1. 将x字符串转换为范围

代码语言:javascript
运行
复制
x_ranges = [list(range(int(xi[0]), int(xi[1])+1)) for xi in [xi.split('-') for xi in x]]
#[[1, 2, 3, 4], [5, 6, 7, 8, 9, 10], [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]]

  1. 在相应的x范围

中每个条目添加一个y元素

代码语言:javascript
运行
复制
y_expanded = [(x[0], [x[1]]*len(x[0])) for x in zip(x_ranges,y)]
#[([1, 2, 3, 4], [10000, 10000, 10000, 10000]),
# ([5, 6, 7, 8, 9, 10], [15000, 15000, 15000, 15000, 15000, 15000]),
# ([11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
#  [20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000])]

  1. 重新分组x和y数组

代码语言:javascript
运行
复制
xy_sorted = list(map(list, zip(*y_expanded)))
#[[[1, 2, 3, 4], [5, 6, 7, 8, 9, 10], [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]],
# [[10000, 10000, 10000, 10000],
#  [15000, 15000, 15000, 15000, 15000, 15000],
#  [20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000, 20000]]]

  1. 将x和y值

的列表扁平化。

代码语言:javascript
运行
复制
x_result = [x for sublist in xy_sorted[0] for x in sublist]
#[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
y_result = [y for sublist in xy_sorted[1] for y in sublist]
#[10000, 10000, 10000, 10000, 15000, 15000, ...]

  1. 创建散点图

代码语言:javascript
运行
复制
plt.xticks(x_result)
plt.ylim(0, max(y_result)+1000)
plt.scatter(x_result, y_result)
plt.show()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67721112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档