2014-09-11 814 views
1

我有一个数据集,我想绘制每个深度处测量次数的直方图。我想绘制深度栏中每个测量频率的直方图。我希望将数据从0米开始分成5米长,高达155米。这段代码给了我一个直方图,它看起来是一个合理的形状,但是这些值看起来是错误的,我不能完全从零开始。另外,我希望能够交换x轴和y轴,深度位于y轴上,频率位于x轴上。如何在直方图上设置轴并交换x和y轴?

import numpy as np 
    import datetime as dt 
    import matplotlib.pyplot as plt 
    import glob 


    #The data is read in, and then formatted so that an array Dout (based on depth) is created. This is done since multiple files will be read into the code, and so I can create the histogram for all the files I have up until this point. 

    Dout = np.array(depthout) 


    bins = np.linspace(0, 130, num=13) #, endpoint=True, retstep=False) 


    plt.hist(Dout, bins) 
    plt.xlabel('Depth/m') 
    plt.ylabel('Frequency') 
    plt.show() 


    # the end 

数据的格式如下:

TagID ProfileNo ProfileDirn  DateTime Lat  Lon  Depth Temperature 
+2

我预期的代码完全不同的块时,我对这个问题点击后,我看了标题。也许你可以在没有所有数据管理的情况下发布一个简单的例子,这更符合标题。对于水平barplot,请检查matplotlib库中的barh_demo:http://matplotlib.org/gallery.html – Nras 2014-09-11 10:46:03

+0

这听起来像是一个完美的熊猫包装工作。使用pd.read_clipboard()获取数据框中的代码。然后df.Temperature.hist()给你一个计时器。有很多切片选项可以用很少的代码来完成你想要做的事情。 – Joop 2014-09-11 10:58:16

+0

可以使用多个文件吗?对不起,我从来没有用过熊猫。 – TDJ92 2014-09-11 11:10:53

回答

3

您希望orientation kwarg的histDocs)。

import matplotlib.pyplot as plt 
import numpy as np 

fig, ax = plt.subplots() 

data = np.random.randn(1500) 
bins = np.linspace(-5, 5, 25, endpoint=True) 

ax.hist(data, bins, orientation='horizontal') 
ax.set_ylim([-5, 5]) 
plt.show() 

enter image description here

+0

这工作完美。谢谢! – TDJ92 2014-09-16 08:03:24