当前位置: 首页 > 知识库问答 >
问题:

Python-以日期和第三个变量为颜色的散点图

马天逸
2023-03-14

我试图绘制一个x-y图,以x或y作为日期变量,并使用第三个变量来着色点。我设法做到这一点,如果没有3个变量的日期,使用:

ax.scatter(df['x'],df['y'],s=20,c=df['z'], marker = 'o', cmap = cm.jet )

搜索之后,我发现对于普通绘图,我们必须使用plot_date()。不幸的是,我无法给这些点上色。有人能帮我吗?

下面是一个小例子:

import matplotlib, datetime
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import pandas as pd

todayTime=datetime.datetime.now();
df = pd.DataFrame({'x': [todayTime+datetime.timedelta(hours=i) for i in range(10)], 'y': range(10),'z' : [2*j for j in range(10)]});
xAlt=[0.5*i for i in range(10)];

fig, ax = plt.subplots()
ax.scatter(df['x'],df['y'],s=20,c=df['z'], marker = 'o', cmap = cm.jet )
plt.show()

您可以用xAlt替换df['x'],以查看所需的结果

共有1个答案

张浩阔
2023-03-14

据我所知,必须使用scatter,以便按照您的描述为点上色。一种解决方法是使用FuncFormatter将刻度标签转换为x轴上的时间。下面的代码将日期转换为数字,绘制散点图,并使用FuncFormatter将记号标签转换回日期。

import matplotlib, datetime
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import pandas as pd
from matplotlib.ticker import FuncFormatter

todayTime=datetime.datetime.now()
df = pd.DataFrame({'x': [todayTime+datetime.timedelta(hours=i) for i in  range(10)], 'y': range(10),'z' : [2*j for j in range(10)]})

def my_formatter(x, pos=None):
    d = matplotlib.dates.num2date(x)
    if len(str(d.minute)) == 1:
        mn = '0{}'.format(d.minute)
    else:
        mn = str(d.minute)
    if len(str(d.hour)) == 1:
        hr = '0{}'.format(d.hour)
    else:
        hr = str(d.hour)
    return hr+':'+mn

major_formatter=FuncFormatter(my_formatter)

nums = np.array([matplotlib.dates.date2num(di) for di in df['x']])

fig, ax = plt.subplots()
ax.xaxis.set_major_formatter(major_formatter)
ax.scatter(nums,df['y'],s=20,c=df['z'], marker = 'o', cmap = cm.jet )
xmin = df['x'][0]-datetime.timedelta(hours=1)
xmax = df['x'][len(df['x'])-1]+datetime.timedelta(hours=1)
ax.set_xlim((xmin,xmax))
plt.show()
 类似资料:
  • 问题内容: 我想制作一个散点图(使用matplotlib),其中根据第三个变量对点进行阴影处理。我对此非常了解: 其中w和M是数据点,而p是我要相对于其着色的变量。 但是我想用灰度而不是彩色。有人可以帮忙吗? 问题答案: 无需手动设置颜色。相反,请指定灰度颜色图… 或者,如果你希望使用更大范围的颜色图,也可以将 指定为。要使用其中任何一个的反向版本,只需指定其中任何一个的“ ”版本即可。例如,而不

  • 我创建了以下3d散点图,使用在R.为此,我使用了以下代码data setTxy,只包含每个标记的x,y,z坐标和每个坐标点的0-1.5之间的值(在名为vectorM的列中) 我以为我把所有的颜色都改成了灰色,但情节里还是有颜色。我怎样才能改变这个?进一步:-为什么缩放不是灰色的;我怎样才能创造这个呢-我如何在右边的刻度上勾勒出“因子”-为什么我有“跟踪0”和“跟踪1”? 我如何在这个图中画两个圆,

  • 我试图弄清楚如何动态设置数据点的edgecolor。可以使用c=[array of numeric labels]设置facecolor,但对于EdgeColor则不是这样。 我试图实现的是一个图,其中facecolor等于实例算法的预测标签,edgecolor等于该实例的真实标签。这样,我可以直观地比较结果(对于进一步的工作很重要)。 有什么建议吗?这是我目前的代码: 这给了我以下的情节 我感谢

  • 我在给散点图标记着色时遇到了一些麻烦。我有一个简单的数据框,其中有一个值“pos”和另外两个值“af_min”和“af_max”。我想根据af_x和af_y的一些条件给标记上色,但是因为我没有任何列可以用作色调,所以我创建了自己的列“color”。 现在,我创建了一个散点图,使用海运和海运调色板的方式: 在这里,我放置了整个脚本,以便您可以复制它: 感谢所有能帮忙的人!

  • 本文向大家介绍Python+matplotlib绘制不同大小和颜色散点图实例,包括了Python+matplotlib绘制不同大小和颜色散点图实例的使用技巧和注意事项,需要的朋友参考一下  具有不同标记颜色和大小的散点图演示。 演示结果: 实现代码: 总结 以上就是本文关于Python+matplotlib绘制不同大小和颜色散点图实例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他

  • 前面课程讲解过一系列顶点通过顶点着色器逐顶点处理后,再经过图元装配、光栅化环节会得到原始未定义颜色的片元,然后经过片元着色器逐片元添加颜色,会得到一副图像。在片元着色器程序中编写代码 gl_FragColor = vec4(1.0,0.0,0.0,1.0)就表示所有经过光栅化生成的没定义颜色的片元经过片元着色器处理后所有片元赋值红色得到一个个红色像素值。 如果希望不同的片元定义不同的颜色怎么编写代