首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在matplotlib散点图中设置xticks的位置

在matplotlib散点图中设置xticks的位置
EN

Stack Overflow用户
提问于 2017-05-30 20:55:10
回答 2查看 6.6K关注 0票数 2

我试图创建一个散点图的测量,其中x标签是WIFI通道。默认情况下,matplotlib是按其数值的比例间隔标签。不过,我希望它们能均匀地分布在散点图上。这有可能吗?

这基本上就是我的绘图代码目前的样子:-其中chanPoints是一个频率列表,而测量是一个测量列表。

代码语言:javascript
运行
复制
plt.scatter(chanPoints,measurements)
plt.xlabel('Frequency (MHz)')
plt.ylabel('EVM (dB)')
plt.xticks(Tchan,rotation = 90)
plt.title('EVM for 5G Channels by Site')
plt.show()

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-30 21:23:58

Numpy

您可以使用numpy创建一个数组,该数组将chanPoints中的唯一项映射到数字0,1,2...。然后,您可以给每个这些数字相应的标签。

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt
import numpy as np

chanPoints = [4980, 4920,4920,5500,4980,5500,4980, 5500, 4920]
measurements = [5,6,4,3,5,8,4,6,3]

unique, index = np.unique(chanPoints, return_inverse=True)
plt.scatter(index, measurements)

plt.xlabel('Frequency (MHz)')
plt.ylabel('EVM (dB)')
plt.xticks(range(len(unique)), unique)
plt.title('EVM for 5G Channels by Site')
plt.show()

海航

如果您喜欢使用海运,这可以节省大量的手工工作。Seaborn是专门用于绘制分类数据的。chanPoints将被解释为x轴上的类别,如果您使用的是swarmplot,那么它们之间的间距是相同的。如果有几个点会重叠,它们就会在彼此的旁边绘制,这可能是一个优势,因为它允许看到该信道的测量数量。

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt
import seaborn.apionly as sns

chanPoints = [4980, 4920,4920,5500,4980,5500,4980, 5500, 4920]
measurements = [5,6,4,3,5,8,4,6,3]

sns.swarmplot(chanPoints, measurements)

plt.xlabel('Frequency (MHz)')
plt.ylabel('EVM (dB)')
plt.title('EVM for 5G Channels by Site')
plt.show()

票数 4
EN

Stack Overflow用户

发布于 2017-05-30 21:05:48

chanPoints替换为index

代码语言:javascript
运行
复制
index = numpy.searchsorted(Tchan, chanPoints)
plt.scatter(index, measurements)

然后使用相应的标签构建您的xticks

代码语言:javascript
运行
复制
ticks = range(len(Tchan))
plt.xticks(ticks, labels=Tchan, rotation = 90)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44271754

复制
相关文章

相似问题

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