繁体   English   中英

如何使用这些数据绘制散点图?

[英]How do I make a scatter plot with these data?

我正在尝试在matplotlib中对3D数据进行2D表示。

我有一些数据文件,例如:

a_1.dat
a_2.dat
a_3.dat

b_1.dat
b_2.dat
b_3.dat

我可以从每个数据文件中提取字母,数字以及与字母数字对关联的参数。

我正在尝试绘制一个散点图,其中一个轴是字母的范围,另一轴是数字的范围,散点表示与每个字母-数字对相关的参数的大小。 我更喜欢这是带有某种颜色条的2D图,而不是3D图。

在这一点上,我可以制作一个2d numpy数组的堆栈,其中每个2d数组看起来像

[a 1 val_a1
 a 2 val_a2
 a 3 val_a3]

[b 1 val_b1
 b 2 val_b2
 b 3 val_b3]
  • 第一个问题:这是存储我要制作的绘图数据的最佳方法吗?

  • 第二个问题:如何使用python(我对matplotlib pyplot最熟悉)进行matplotlib pyplot

为了能够完全确定存储数据的方式是否正确,应考虑如何使用它。 如果您仅使用它来进行此处所述的绘图,则为简单起见,您可以仅使用三个一维数组。 但是,如果您希望获得更紧密的结构,则可以考虑使用带有自定义dtype的2D数组。

考虑到这一点,您可以轻松地创建具有不同颜色的2D散点图,其中确切的颜色由与每对关联的值(字母,数字)确定。

import numpy as np
from matplotlib import pyplot as plt
from matplotlib import cm

# You might note that in this simple case using numpy for creating array
# was actually unnecessary as simple lists would suffice
letters = np.array(['a', 'a', 'a', 'b', 'b', 'b'])
numbers = np.array([1, 2, 3, 1, 2, 3])
values = np.array([1, 2, 3, 1.5, 3.5, 4.5])

items = len(letters)

# x and y should be numbers, so we first feed it some integers
# Parameter c defines color values and cmap defines color mappings
plt.scatter(xrange(items), numbers, c=values, cmap=cm.jet)

# Now that data is created, we can re-set xticks
plt.xticks(xrange(items), letters)

代码结果

希望这足以为一个良好的开端。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM