Python matplotlib:如何根据某些变量更改数据点的颜色
我有两个变量(x,y),它们随时间(t)变化。我想绘制x与t的对比图,并根据y的值为刻度着色。e、 g.对于y的最高值,勾号颜色为深绿色,对于最低值,勾号颜色为深红色,对于中间值,勾号颜色将在绿色和红色之间缩放Python matplotlib:如何根据某些变量更改数据点的颜色,python,matplotlib,Python,Matplotlib,我有两个变量(x,y),它们随时间(t)变化。我想绘制x与t的对比图,并根据y的值为刻度着色。e、 g.对于y的最高值,勾号颜色为深绿色,对于最低值,勾号颜色为深红色,对于中间值,勾号颜色将在绿色和红色之间缩放 这可以用python中的matplotlib实现吗?这就是matplotlib.pyplot.scatter的用途 举个简单的例子: import matplotlib.pyplot as plt import numpy as np # Generate data... t = np
这可以用python中的matplotlib实现吗?这就是
matplotlib.pyplot.scatter
的用途
举个简单的例子:
import matplotlib.pyplot as plt
import numpy as np
# Generate data...
t = np.linspace(0, 2 * np.pi, 20)
x = np.sin(t)
y = np.cos(t)
plt.scatter(t,x,c=y)
plt.show()
如果要绘制直线而不是点,请参见,此处修改以绘制表示函数的好/坏点(视情况而定)为黑色/红色:
def plot(xx, yy, good):
"""Plot data
Good parts are plotted as black, bad parts as red.
Parameters
----------
xx, yy : 1D arrays
Data to plot.
good : `numpy.ndarray`, boolean
Boolean array indicating if point is good.
"""
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
from matplotlib.colors import from_levels_and_colors
from matplotlib.collections import LineCollection
cmap, norm = from_levels_and_colors([0.0, 0.5, 1.5], ['red', 'black'])
points = np.array([xx, yy]).T.reshape(-1, 1, 2)
segments = np.concatenate([points[:-1], points[1:]], axis=1)
lines = LineCollection(segments, cmap=cmap, norm=norm)
lines.set_array(good.astype(int))
ax.add_collection(lines)
plt.show()
对于散点图以外的其他图,这可能吗?3d绘图?“已经搜索了一段时间,但似乎找不到一种方法来完成它。@SitzBlogz-当然,只需使用自定义颜色贴图和norm即可。在您的例子中,
cmap,norm=mpl.colors.从\u级别和\u颜色([0,2,5,6],“红”、“绿”、“蓝”])
然后是ax.scatter(x,y,c=z,cmap=cmap,norm=norm)
。谢谢,这很有用,但仍然无法使用plot()
命令本身(为o
指定的标记提供颜色映射)@GokhanArik-如果未指定颜色贴图,scatter
将使用默认颜色贴图设置为的任何颜色。在本例中,您可以通过调用plt.gray
、更改.matplotlibrc
、或使用带有灰度颜色贴图的样式将其设置为gray
。要指定应使用哪种颜色贴图散点,请使用cmap
kwarg。例如:cmap=“jet”
复制示例。是否也要有颜色图例?