Python中的散点图和颜色映射
我有一系列的点x和y存储在numpy数组中。 它们代表x(t)和y(t),其中t=0…t-1 我正在使用Python中的散点图和颜色映射,python,matplotlib,Python,Matplotlib,我有一系列的点x和y存储在numpy数组中。 它们代表x(t)和y(t),其中t=0…t-1 我正在使用 import matplotlib.pyplot as plt plt.scatter(x,y) plt.show() 我希望有一个表示时间的颜色映射(因此根据numpy数组中的索引为点着色) 最简单的方法是什么?下面是一个例子 import numpy as np import matplotlib.pyplot as plt x = np.random.rand(100) y =
import matplotlib.pyplot as plt
plt.scatter(x,y)
plt.show()
我希望有一个表示时间的颜色映射(因此根据numpy数组中的索引为点着色)
最简单的方法是什么?下面是一个例子
import numpy as np
import matplotlib.pyplot as plt
x = np.random.rand(100)
y = np.random.rand(100)
t = np.arange(100)
plt.scatter(x, y, c=t)
plt.show()
在这里,您可以根据索引设置颜色,t
,它只是[1,2,…,100]
的一个数组。
也许更容易理解的例子是稍微简单一点的
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(100)
y = x
t = x
plt.scatter(x, y, c=t)
plt.show()
请注意,作为c
传递的数组不需要有任何特定的顺序或类型,也就是说,它不需要像这些示例中那样进行排序或整数。绘图例程将缩放颜色贴图,使c
中的最小值/最大值对应于颜色贴图的底部/顶部
彩色地图
您可以通过添加
import matplotlib.cm as cm
plt.scatter(x, y, c=t, cmap=cm.cmap_name)
导入matplotlib.cm
是可选的,因为您也可以将颜色映射称为cmap=“cmap\u name”
。有一系列彩色地图显示了每一张的样子。还知道,只需将颜色映射称为cmap\u name\u r
即可反转颜色映射。所以
plt.scatter(x, y, c=t, cmap=cm.cmap_name_r)
# or
plt.scatter(x, y, c=t, cmap="cmap_name_r")
会有用的。例如“jet\u r”
或cm.plasma\u r
。以下是新的1.5 colormap viridis的示例:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(100)
y = x
t = x
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.scatter(x, y, c=t, cmap='viridis')
ax2.scatter(x, y, c=t, cmap='viridis_r')
plt.show()
色条
您可以使用添加颜色栏
plt.scatter(x, y, c=t, cmap='viridis')
plt.colorbar()
plt.show()
请注意,如果您明确使用图形和子图(例如,fig,ax=plt.subplot()
或ax=fig.add\u subplot(111)
),则添加颜色条可能更复杂。你可以找到很好的例子,这里有一个例子
import numpy as np
import matplotlib.pyplot as plt
x = np.random.rand(100)
y = np.random.rand(100)
t = np.arange(100)
plt.scatter(x, y, c=t)
plt.show()
在这里,您可以根据索引设置颜色,t
,它只是[1,2,…,100]
的一个数组。
也许更容易理解的例子是稍微简单一点的
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(100)
y = x
t = x
plt.scatter(x, y, c=t)
plt.show()
请注意,作为c
传递的数组不需要有任何特定的顺序或类型,也就是说,它不需要像这些示例中那样进行排序或整数。绘图例程将缩放颜色贴图,使c
中的最小值/最大值对应于颜色贴图的底部/顶部
彩色地图
您可以通过添加
import matplotlib.cm as cm
plt.scatter(x, y, c=t, cmap=cm.cmap_name)
导入matplotlib.cm
是可选的,因为您也可以将颜色映射称为cmap=“cmap\u name”
。有一系列彩色地图显示了每一张的样子。还知道,只需将颜色映射称为cmap\u name\u r
即可反转颜色映射。所以
plt.scatter(x, y, c=t, cmap=cm.cmap_name_r)
# or
plt.scatter(x, y, c=t, cmap="cmap_name_r")
会有用的。例如“jet\u r”
或cm.plasma\u r
。以下是新的1.5 colormap viridis的示例:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(100)
y = x
t = x
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.scatter(x, y, c=t, cmap='viridis')
ax2.scatter(x, y, c=t, cmap='viridis_r')
plt.show()
色条
您可以使用添加颜色栏
plt.scatter(x, y, c=t, cmap='viridis')
plt.colorbar()
plt.show()
请注意,如果您明确使用图形和子图(例如,
fig,ax=plt.subplot()
或ax=fig.add\u subplot(111)
),则添加颜色条可能更复杂。可以找到好的示例,并且。要添加到wflynny的上述答案中,您可以找到可用的颜色贴图
例如:
或者,
要添加到wflynny上面的答案中,您可以找到可用的颜色贴图 例如: 或者,
子批次颜色栏 对于带有散点的子图,您可以在辅助图形的帮助下构建“可映射”并将其添加到原始图中,从而将颜色条欺骗到轴上 作为上述示例的延续:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(10)
y = x
t = x
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.scatter(x, y, c=t, cmap='viridis')
ax2.scatter(x, y, c=t, cmap='viridis_r')
# Build your secondary mirror axes:
fig2, (ax3, ax4) = plt.subplots(1, 2)
# Build maps that parallel the color-coded data
# NOTE 1: imshow requires a 2-D array as input
# NOTE 2: You must use the same cmap tag as above for it match
map1 = ax3.imshow(np.stack([t, t]),cmap='viridis')
map2 = ax4.imshow(np.stack([t, t]),cmap='viridis_r')
# Add your maps onto your original figure/axes
fig.colorbar(map1, ax=ax1)
fig.colorbar(map2, ax=ax2)
plt.show()
请注意,您还将输出一个可以忽略的辅助图形。子批次颜色栏 对于带有散点的子图,您可以在辅助图形的帮助下构建“可映射”并将其添加到原始图中,从而将颜色条欺骗到轴上 作为上述示例的延续:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(10)
y = x
t = x
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.scatter(x, y, c=t, cmap='viridis')
ax2.scatter(x, y, c=t, cmap='viridis_r')
# Build your secondary mirror axes:
fig2, (ax3, ax4) = plt.subplots(1, 2)
# Build maps that parallel the color-coded data
# NOTE 1: imshow requires a 2-D array as input
# NOTE 2: You must use the same cmap tag as above for it match
map1 = ax3.imshow(np.stack([t, t]),cmap='viridis')
map2 = ax4.imshow(np.stack([t, t]),cmap='viridis_r')
# Add your maps onto your original figure/axes
fig.colorbar(map1, ax=ax1)
fig.colorbar(map2, ax=ax2)
plt.show()
请注意,您还将输出一个可以忽略的辅助图形。您可以使用
plt.colorbar()
命令获取颜色图例。此处的代码似乎已更改。cmap=cm.colormap\u名称现在应为cmap=cm.cmapname。@cmarti1138我不确定您的意思,cm.colormap_name
和cm.cmapname
不是matplotlib.cm
中的实际变量;这只是cm.jet
或cm.veridis_r
等的伪代码。这个答案的核心元素是c=np.arange(len(x))
plt.legend(“wflynny”)你可以通过plt.colorbar()获得颜色的图例
命令。此处的代码似乎已更改。cmap=cm.colormap\u名称现在应为cmap=cm.cmapname。@cmarti1138我不确定您的意思,cm.colormap\u名称和cm.cmapname
不是matplotlib.cm
中的实际变量;这只是cm.jet
或cm.veridis\u r
等的伪代码。这个答案的核心元素是c=np.arange(len(x))
plt.legend(“wflynny”)