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

时间:2014-05-05 21:33:21

标签: python matplotlib plot

我正在尝试在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)?

1 个答案:

答案 0 :(得分:1)

为了能够完全确定您的数据存储方式是否正确,您应该考虑如何使用它。如果您正在使用它,只想将其用于此处所述的绘图,那么为了简单起见,您可以使用三个1D阵列。但是,如果您希望实现更紧密的结构,则可以考虑使用带有custom 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)

code result

希望这对于一个良好的开端应该足够了。