【问题标题】:Suggestions on plotting 3 1-Dimensional variables绘制 3 个一维变量的建议
【发布时间】:2013-07-02 16:02:06
【问题描述】:

我已经阅读了我的软件定义无线电。我有三个量,频率,功率和错误率。我想将频率保持在我的 x 轴上,因为后面的量是相对于频率测量的。现在我需要将它们绘制在一条曲线上,以便我可以一次看到频率与功率以及频率与错误率。我一直在看 matplotlib 很长一段时间,但我看到了 3d 散点图,它们似乎没有传达我想要的图片。所以我的问题是

  1. 在我的情况下 3d 绘图没用,我最好绘制 2 个图形并将两个图形的 y 轴连接在一起,这样我就可以看到两个图形彼此重叠。

  2. 在 python 或 matlab 中是否有一种方法可以绘制 3d 曲线,然后如果您移动光标,您可以看到频率与功率,如果您以其他方式移动光标,您可以看到频率与错误率.

关于如何更好地表达我的读数的任何其他想法都会有所帮助。

【问题讨论】:

  • 您是否考虑过使用surfmesh
  • 我都看过了。但它们似乎不太清楚,以至于如果我看到图表,我并不能立即准确地识别出我的 y 参数。我可能错了,因为我今天第一次看到冲浪和网格。如果你能给我看一个非常有帮助的例子。
  • 您有 3D 数据吗?那么对于每个频率功率对有多个错误率?或者你只有3个变量?我问的原因是要清楚你的 (1.) 问题。
  • 重新阅读,看起来你有一个自变量(频率)和两个因变量(功率和错误率)。在这种情况下,二维图会更好。对困惑感到抱歉。您是否有理由需要它们彼此重叠并且不能将它们彼此相邻绘制? subplot 可能有用
  • @Schorsch 我有一个频率,基于我有一个功率读数和错误率,功率和错误再次相互独立。

标签: matlab matplotlib plot graphing


【解决方案1】:

当两组数据共享相同的因变量(x 轴)时,在科学文献中通常至少以以下方式绘制它们以节省空间:

这比缠绕 xaxis 更可取,这可能会导致某些人感到困惑。如果要比较特征,它尤其适用。

此图是使用以下方法生成的:

import pylab as py

x = py.linspace(0,10,1000)
y = py.sin(x) 
z = py.sinc(x)

ax1 = py.subplot(211)
ax1.plot(x,y)
ax1.set_xticklabels([])  # Remove the xticks from the top figure
ax1.set_yticks(ax1.get_yticks()[1:]) # Stops the y axis overlapping

ax2 = py.subplot(212)
ax2.plot(x,z)

py.subplots_adjust(hspace=0.0)

py.show()

我相信有更好的方法来删除xticklabels,但我现在不记得了。注意不要只是py.set_xticks([]),就好像你然后要求一个网格,上面的情节没有ticks

【讨论】:

  • 谢谢格雷。那很有帮助。我应该如何标记我的图表。 ax1.xlabel('frequency') 不起作用。
  • 我明白了。我使用了 set_xlabel 方法。谢谢。我有一个小疑问是我可以在绘制后更改我的 yaxis 比例尺。就像我有一个 yplot 图形,它没有向我展示我需要的即时更改。那么我可以根据绘制后如何查看图表来更改 y 轴刻度吗?
  • 一般来说,不,这似乎是一个限制,但事实并非如此。每次进行更改时都应重新绘制,这意味着无需手动设置限制即可重现数字。如果您想对不同数据使用相同的绘图脚本,您可以将其转换为接受文件名并自动设置 ylimit 的函数。用户输入越少越好。为了帮助解决这些问题,您应该看看 IPython
  • 哦。这对我来说听起来像希腊语。为了方便起见,我使用了 set_ylimit() 并设置了 y 限制。我不知道我可以自动化它。关于 ipython 有什么好的参考资料吗?
  • Ipython notebook website 我建议你看一个视频。最重要的工具是? 和制表符补全,允许更轻松、更快地访问 python 功能。关于自动化,请考虑一下为什么每次都选择 ylims 然后将其自动化。
猜你喜欢
  • 1970-01-01
  • 2021-07-17
  • 1970-01-01
  • 2020-12-06
  • 2020-09-16
  • 2023-04-01
  • 2019-01-29
  • 1970-01-01
  • 2023-01-08
相关资源
最近更新 更多