繁体   English   中英

如何防止 pandas.Dataframe.hist() 创建带有叠加数据的子图?

[英]How to prevent pandas.Dataframe.hist() from creating subplots with superimposed data?

我正在尝试相对于第三列显示两个数据框列。 这是我的代码的样子:

  1 import pandas as pd                                                                                                                                                                                            
  2 import matplotlib.pyplot as plt                                                                               
  3                                                                                                               
  4 col1=[1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8]                                                                        
  5 col2=[1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2]                                                                        
  6 col3=[1,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75]                                                          
  7                                                                                                               
  8 myDF = pd.DataFrame({'col1': col1, 'col2': col2, 'col3':col3})                                                
  9                                                                                                               
 10 myDF.hist(['col3','col3'], weights=[myDF.col1,myDF.col2])                                                     
 11                                                                                                               
 12 plt.savefig('myDF.png', format='png') 

这是输出:

重复叠加直方图

我试着强加一个子情节

fig, ax = plt.subplots(figsize = (1,1))
myDF.hist(['col3','col3'], weights=[myDF.col1,myDF.col2], ax=ax)

但它在运行时被覆盖。 任何想法我怎么能得到一个单一的情节?

编辑:以下工作

x = [list(myDF.col3), list(myDF.col3)]
plt.hist(x, weights=[myDF.col1,myDF.col2])

似乎是 pandas hist() 函数的问题(?)

我不能以干净的方式。 您可以尝试以下操作:

import pandas as pd                                                                                                                                                                                            
import matplotlib.pyplot as plt                                                                               

col1=[1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8]                                                                        
col2=[1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2]                                                                        
col3=[1,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75]                                                          

myDF = pd.DataFrame({'col1': col1, 'col2': col2, 'col3':col3})                                                

ax = myDF.hist(column='col3', weights=[myDF.col1], align='mid', rwidth=0.8)
myDF.hist(column='col3', weights=[myDF.col2], ax=ax, align='mid', rwidth=0.8, alpha=0.8)

您可以尝试使用条形对齐(左,中或右)和条形rwidth ...

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM