Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python dataframe1的散点图,标记样式由dataframe2中的连续变量确定_Python_Pandas_Matplotlib - Fatal编程技术网

Python dataframe1的散点图,标记样式由dataframe2中的连续变量确定

Python dataframe1的散点图,标记样式由dataframe2中的连续变量确定,python,pandas,matplotlib,Python,Pandas,Matplotlib,我想打印DataFrame1中的数据,标记样式由DataFrame2中连续变量的值决定 DataFrame1包含按月份显示的速度差异信息DataFrame2包含统计显著性测试的结果 如果值小于0.05,我想通过更改标记样式来指示差异何时显著 到目前为止,我所拥有的将很好地绘制DataFrame1,但我不确定如何合并df2。也许通过压缩数据帧 import numpy as np import pandas as pd import matplotlib.pyplot as plt import

我想打印
DataFrame1
中的数据,标记样式由
DataFrame2
中连续变量的值决定

DataFrame1
包含按月份显示的速度差异信息
DataFrame2
包含统计显著性测试的结果

如果值小于
0.05
,我想通过更改标记样式来指示差异何时显著

到目前为止,我所拥有的将很好地绘制
DataFrame1
,但我不确定如何合并
df2
。也许通过压缩数据帧


import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cm as cm

# Some fake data
months = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')
periods = np.arange(1950, 1960, 1)  
df1 = pd.DataFrame(np.random.randn(10,12), index=periods, columns=months)   # Value to be plotted
df2 = pd.DataFrame(np.random.rand(10,12), index=periods, columns=months)    # Determine marker shape

colors = cm.rainbow(np.linspace(0, 1.1, len(months)))

plt.figure(figsize=(10, 6))  
for c, mmm in zip(colors, months):
    plt.scatter(df1.index, df1[mmm], color=c)
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
plt.title("Change in speed")

电流输出:
一种简单的方法是将
dataframe1
拆分为两个子数据帧:一个用于下面的
dataframe2
值,一个用于上面的值。然后,您可以使用不同的标记进行两次
scatter
调用

注意:因为我们每个月做两个散点图,所以图例中的月份标签是重复的。我通过将其中一个设置为
,将另一个设置为匹配的
月份来解决这个问题

下面是整个代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cm as cm

# Some fake data
months = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')
periods = np.arange(1950, 1960, 1)  
df1 = pd.DataFrame(np.random.randn(10,12), index=periods, columns=months)   # Value to be plotted
df2 = pd.DataFrame(np.random.rand(10,12), index=periods, columns=months)    # Determine marker shape

colors = cm.rainbow(np.linspace(0, 1.1, len(months)))

plt.figure(figsize=(10, 6))  
for c, mmm in zip(colors, months):
    # First sub dataframe1 where df2 values are below 0.05
    df1_plot_below = df1[df2[mmm] < 0.05]
    plt.scatter(df1_plot_below.index, df1_plot_below[mmm], color=c, marker="v", label="")

    # First sub dataframe1 where df2 values are above 0.05
    df1_plot_above = df1[df2[mmm] >= 0.05]
    plt.scatter(df1_plot_above.index, df1_plot_above[mmm], color=c, marker="^", label=mmm)

plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
plt.title("Change in speed")
plt.show()
将numpy导入为np
作为pd进口熊猫
将matplotlib.pyplot作为plt导入
将matplotlib.cm导入为cm
#一些假数据
月份=(‘一月’、‘二月’、‘三月’、‘四月’、‘五月’、‘六月’、‘七月’、‘八月’、‘九月’、‘十月’、‘十一月’、‘十二月’)
周期=np.arange(1950、1960、1)
df1=pd.DataFrame(np.random.randn(10,12),索引=周期,列=月)#要绘制的值
df2=pd.DataFrame(np.random.rand(10,12),索引=期间,列=月份)#确定标记形状
颜色=厘米彩虹(np.linspace(0,1.1,len(月)))
plt.图(figsize=(10,6))
对于c、mmm拉链(颜色、月份):
#df2值低于0.05的第一个子数据框1
df1_图_下方=df1[df2[mmm]<0.05]
plt.scatter(df1\u plot\u低于索引,df1\u plot\u低于[mmm],颜色=c,marker=“v”,label=”“)
#df2值高于0.05的第一个子数据框1
上面的df1\u图=df1[df2[mmm]>=0.05]
plt.scatter(索引上方的df1_plot_,索引上方的df1_plot_,[mmm],颜色=c,标记=“^”,标签=mmm)
plt.图例(loc='中左',bbox_至_锚=(1,0.5))
plt.标题(“速度变化”)
plt.show()
输出:
一种简单的方法是将
dataframe1
拆分为两个子数据帧:一个用于下面的
dataframe2
值,一个用于上面的值。然后,您可以使用不同的标记进行两次
scatter
调用

注意:因为我们每个月做两个散点图,所以图例中的月份标签是重复的。我通过将其中一个设置为
,将另一个设置为匹配的
月份来解决这个问题

下面是整个代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cm as cm

# Some fake data
months = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')
periods = np.arange(1950, 1960, 1)  
df1 = pd.DataFrame(np.random.randn(10,12), index=periods, columns=months)   # Value to be plotted
df2 = pd.DataFrame(np.random.rand(10,12), index=periods, columns=months)    # Determine marker shape

colors = cm.rainbow(np.linspace(0, 1.1, len(months)))

plt.figure(figsize=(10, 6))  
for c, mmm in zip(colors, months):
    # First sub dataframe1 where df2 values are below 0.05
    df1_plot_below = df1[df2[mmm] < 0.05]
    plt.scatter(df1_plot_below.index, df1_plot_below[mmm], color=c, marker="v", label="")

    # First sub dataframe1 where df2 values are above 0.05
    df1_plot_above = df1[df2[mmm] >= 0.05]
    plt.scatter(df1_plot_above.index, df1_plot_above[mmm], color=c, marker="^", label=mmm)

plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
plt.title("Change in speed")
plt.show()
将numpy导入为np
作为pd进口熊猫
将matplotlib.pyplot作为plt导入
将matplotlib.cm导入为cm
#一些假数据
月份=(‘一月’、‘二月’、‘三月’、‘四月’、‘五月’、‘六月’、‘七月’、‘八月’、‘九月’、‘十月’、‘十一月’、‘十二月’)
周期=np.arange(1950、1960、1)
df1=pd.DataFrame(np.random.randn(10,12),索引=周期,列=月)#要绘制的值
df2=pd.DataFrame(np.random.rand(10,12),索引=期间,列=月份)#确定标记形状
颜色=厘米彩虹(np.linspace(0,1.1,len(月)))
plt.图(figsize=(10,6))
对于c、mmm拉链(颜色、月份):
#df2值低于0.05的第一个子数据框1
df1_图_下方=df1[df2[mmm]<0.05]
plt.scatter(df1\u plot\u低于索引,df1\u plot\u低于[mmm],颜色=c,marker=“v”,label=”“)
#df2值高于0.05的第一个子数据框1
上面的df1\u图=df1[df2[mmm]>=0.05]
plt.scatter(索引上方的df1_plot_,索引上方的df1_plot_,[mmm],颜色=c,标记=“^”,标签=mmm)
plt.图例(loc='中左',bbox_至_锚=(1,0.5))
plt.标题(“速度变化”)
plt.show()
输出: