我有几个单独的x和y变量列表,例如:
x1=[1,2,3], y1=[1,2,3],
x2=[1,2,3], y2=[4,5,6]
x3=[1,2,3], y3=[7,8,9]
我还有一个单独的第三个变量,一个对应于每组数据的值:例如var=[10,20,30]
。
我希望绘制单独的点组,并根据第三个变量为每个组着色,从冷到热,具体取决于var中的值。即x1,y1的整个数据集将是相同的颜色,并且将根据值10。
非常感谢任何帮助!
答案 0 :(得分:1)
我认为你在寻找以下内容,因为你有3d积分。
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
x1=[1,2,3]; y1=[3,2,3]
x2=[-1,-2,-3]; y2=[4,5,6]
x3=[0,0,0]; y3=[7,8,9]
zS = [10, 20, 100]
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# Define the color map
cm = plt.cm.get_cmap('RdYlBu')
# Iterate through points and plot
for x, y, z in zip([x1, x2, x3], [y1, y2, y3], zS):
ax.scatter(x[0], x[1], x[2], s=50,
c=z, cmap=cm, vmin=0, vmax=100)
ax.scatter(y[0], y[1], y[2], s=50,
c=z, cmap=cm, vmin=0, vmax=100)
plt.show()
这是一种相当漫长的方式,它可以改进,但我希望尽可能贴近您提供的数据。
如果您最终以这种方式绘制大量点,我建议将它们全部作为数组(包含大小)传递,而不是在每个点上循环。这会加快它的速度,但我认为最初更容易消化。
答案 1 :(得分:0)
也许你想要这样的东西:
for i in range(3, 10, 3):
color = (((i - 1) / 9.), 0.0, 1-((i - 1) / 9.)) #Generate a color for the points, blue to red.
j = list(range(1, 3+1)) # Generate your data set.
k = list(range(i-2, i+1))
plt.plot(j,k, 'ro', c=color) # Plot each one
plt.axis([-1,4,-1,10])
plt.show() #Finally show it.
这会产生: