小编Ash*_*ton的帖子

使用plt.subplots时的图形大小

我在使用时尝试更改图形尺寸时遇到了一些麻烦plt.subplots.使用下面的代码,我只得到标准尺寸图,其中所有的子图集合在一起(大约有100个),显然只是一个额外的空图形.我尝试过使用tight_layout,但无济于事.

def plot(reader):
    channels=[]
    for i in reader:
        channels.append(i)

    plt.figure(figsize=(50,100))
    fig, ax = plt.subplots(len(channels), sharex=True)

    plot=0    
    for j in reader: 

        ax[plot].plot(reader["%s" % j])
        plot=plot+1

    plt.tight_layout()
    plt.show()
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒!

在此输入图像描述

python layout matplotlib subplot

20
推荐指数
1
解决办法
5万
查看次数

循环生成子图时出错

我有一个关于循环从数据框中绘制多个子图时收到的错误的问题.

我的数据框有很多列,我在其中循环以获得每列的子图.

这是我的代码

 def plot(df):
    channels=[]
    for i in df:
        channels.append(i)

    fig, ax = plt.subplots(len(channels), sharex=True, figsize=(50,100))

    plot=0    
    for j in df: 

        ax[plot].plot(df["%s" % j])
        ax[plot].set_xlabel('%s' % j)
        plot=plot+1

    plt.tight_layout()
    plt.show() 
Run Code Online (Sandbox Code Playgroud)

我得到的情节很好,但也是一个空框架和错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\AClayton\WinPython-64bit-2.7.5.3\python-2.7.5.amd64\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 538, in runfile
    execfile(filename, namespace)
  File "C:/Users/AClayton/Desktop/Data/TS.py", line 67, in <module>
    plot(all_data)
  File "C:/Users/AClayton/Desktop/Data/TS.py", line 49, in plot
    ax[plot].plot(reader["%s" % j])
TypeError: 'AxesSubplot' object does not support indexing
Run Code Online (Sandbox Code Playgroud)

如果第一个图表生成正常,或者为什么产生第二个图形,我看不出这个错误来自哪里?

感谢您的任何见解

python matplotlib dataframe subplot

18
推荐指数
1
解决办法
2万
查看次数

不在matplotlib中绘制'零'或将零更改为无[Python]

我有下面的代码,我想将数据中的所有零转换为None's(因为我不想在matplotlib中绘制数据).但是,代码不起作用,0.仍在打印中

sd_rel_track_sum=np.sum(sd_rel_track, axis=1)
for i in sd_rel_track_sum:
   print i
   if i==0:
       i=None

return sd_rel_track_sum
Run Code Online (Sandbox Code Playgroud)

任何人都可以想到解决这个问题.或者只是我可以将所有0转移到的答案None.或者只是不在Matplotlib中绘制零值.

python numpy matplotlib zero

10
推荐指数
2
解决办法
2万
查看次数

如何删除包含零的numpy数组中的行?

我正在尝试编写一个函数来删除其中包含零值的所有行.这不是来自我的代码,而是我正在使用的想法的一个示例:

import numpy as np
a=np.array(([7,1,2,8],[4,0,3,2],[5,8,3,6],[4,3,2,0]))
b=[]

for i in range(len(a)):
    for j in range (len(a[i])):
        if a[i][j]==0:
            b.append(i)

print 'b=', b
for zero_row in b:
    x=np.delete(a,zero_row, 0)

print 'a=',a
Run Code Online (Sandbox Code Playgroud)

这是我的输出:

b= [1, 3]
a= [[7 1 2 8]
 [4 0 3 2]
 [5 8 3 6]
 [4 3 2 0]]
Run Code Online (Sandbox Code Playgroud)

如何摆脱b中索引的行?对不起,我对此很新,任何帮助都会非常感激.

python arrays numpy zero delete-row

8
推荐指数
2
解决办法
2万
查看次数

调整matplotlib中单个子图的大小

我在尝试调整matplotlib中的一个子图时遇到了麻烦.基本上我有四个地块,我希望它的大小约为其他地块的1.5.

我也很难尝试给出顶部子图的传奇.我希望它将每种颜色指定为1,2,3,4或5(请参见图像).

这是我的绘图功能代码

def plot_data(avg_rel_track, sd_rel_track_sum, sd_index, sd_grad):

    fig, (ax0, ax1, ax2, ax3) = plt.subplots(nrows=4, figsize=(15,10))
    fig.subplots_adjust(top=0.85)
    ax0.plot(avg_rel_track_nan)
    if len(sd_index)!=0:
        if len(sd_index)>1:
            for i in range(1, len(sd_index)):
                if sd_grad[i]==1:
                    ax0.axvspan(sd_index[i-1],sd_index[i], edgecolor='#FFCC66', facecolor='#FFCC66', alpha=1)
    #The following plot has 5 plots within it.
    ax0.set_title('Averaged Relative Track',fontsize=11)
    ax0.set_ylim(auto=True)

    ax1.plot(sd_rel_track_sum)
    ax1.set_title('RT Standard Deviation',fontsize=11)
    ax1.set_ylim([0,250])

    ax2.plot(splitpre)
    ax2.set_title('Track Split',fontsize=11)

    ax3.plot(ts_sd)
    ax3.set_title('Track Split Standard Dev',fontsize=11)
    ax3.set_ylim([0,100])

    fig.tight_layout()
    plt.show()
Run Code Online (Sandbox Code Playgroud)

我正在努力找到一种方法来调整大小而不改变函数编写的整个方式.我似乎无法找到'subplots'的文档.

另外根据我的理解,你必须在你的情节中添加一个"标签"才能创建一个图例.但是,顶部子图的所有数据是否同时绘制?

剧情

python plot matplotlib legend subplot

8
推荐指数
1
解决办法
7204
查看次数

无法将数组转换为浮点数python

我遇到的问题似乎很容易解释答案.我正在努力将我的数组元素转换为浮点数(这样我可以繁殖,添加它们等)

import csv
import os
import glob
import numpy as np

def get_data(filename):
    with open(filename, 'r') as f:
        reader = csv.reader(f)                      
        return list(reader)

all_data = []

path=raw_input('What is the directory?')       
for infile in glob.glob(os.path.join(path, '*.csv')):
     all_data.extend(get_data(infile))
a = np.array(all_data)
current_track_data=a[0:,[8,9,10,11,12]]
abs_track_data=a[0:,7]
Run Code Online (Sandbox Code Playgroud)

我收到错误:

> --------------------------------------------------------------------------- ValueError                                Traceback (most recent call last) C:\Users\AClayton\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.0.3.1262.win-x86_64\lib\site-packages\IPython\utils\py3compat.pyc in execfile(fname, glob, loc)
    174             else:
    175                 filename = fname
--> 176             exec compile(scripttext, filename, 'exec') in glob, loc
    177     else:
    178         def execfile(fname, *where):
> 
> C:\Users\AClayton\Current\python begin\code_tester2.py …
Run Code Online (Sandbox Code Playgroud)

python csv arrays floating-point numpy

5
推荐指数
1
解决办法
3万
查看次数

在图形下设置颜色图

我知道这是有据可查的,但我正在努力在我的代码中实现这一点。

我想用颜色图对图表下方的区域进行着色。是否有可能有一种颜色,即从超过 30 的任何点开始的红色,以及直到该点的渐变?

我正在使用 fill_between 方法,但如果有更好的方法,我很乐意更改此方法。

def plot(sd_values):

    plt.figure()
    sd_values=np.array(sd_values)
    x=np.arange(len(sd_values))
    plt.plot(x,sd_values, linewidth=1)
    plt.fill_between(x,sd_values, cmap=plt.cm.jet)
    plt.show()
Run Code Online (Sandbox Code Playgroud)

这是目前的结果。我试过axvspan,但这没有cmap作为一个选项。为什么下图没有显示颜色图?

在此处输入图片说明

python graph matplotlib color-mapping

2
推荐指数
1
解决办法
1976
查看次数

将系列的值添加到数据帧

我正在尝试将一系列的值添加到数据帧中.我不是要将列添加到数据帧的末尾,即在数据框中创建一个额外的列.

我有一个与数据框中的列长度相同的系列.我想将系列中的值添加到框架中的每一列.我试过Dataframe.add()但它没有用.

代码:Dataframe(命名阅读器):

     Current track blade 1   Current track blade 2   
0                -8.577881               -0.333252  
1                -6.284912                5.294434    
2                 6.269775               11.229490     
3                 5.253418               10.187260     
4               -16.088380               -2.967773  
Run Code Online (Sandbox Code Playgroud)

要添加到每列的系列(名为abs_track):

    Current abs track
0            3503.125
1            3517.333
2            3504.778
3            3476.127
4            3477.776
Run Code Online (Sandbox Code Playgroud)

reader=reader+abs_trackreader.add('abs_track')给:

     Current abs track   Current track blade 1   Current track blade 2    


0                  NaN                     NaN                     NaN                     
1                  NaN                     NaN                     NaN 
2                  NaN                     NaN                     NaN   
3                  NaN                     NaN                     NaN   
4                  NaN                     NaN                     NaN   
Run Code Online (Sandbox Code Playgroud)

有任何想法吗.

python add pandas

2
推荐指数
1
解决办法
196
查看次数

Colormap整个子图

我在使用彩色地图时遇到了一些麻烦.基本上,我想要制作的内容与下图相似.

在底部的插曲,我想能够绘制相应的颜色,但跨越subplot.ie它只是看起来像一个colourmap在整个剧情的整个背景,没有绘制的点或线.它应该仍然对应于散点图中显示的颜色.

是否有可能做到这一点?我理想的做法是将此背景置于顶部子图下.(y刻度是不同的单位)

在此输入图像描述

谢谢你的帮助.

底部散点子图的代码:

x = np.arange(len(wind))
y = wind
t = y
plt.scatter(x, y, c=t)
Run Code Online (Sandbox Code Playgroud)

风是一维阵列

python matplotlib color-mapping

2
推荐指数
1
解决办法
170
查看次数

尝试添加颜色条时出错

我正在尝试创建一个相关矩阵。创建矩阵工作正常,直到我尝试添加颜色条。

这是我当前的代码:

def corr_matrix(data):
    '''function to find the mean for days'''

    data=data.ix[:,1:].corr(method='pearson')
    row_lab=[]
    col_lab=[]

    for i in data:
        row_lab.append(i)
        col_lab.append(i)
    column_labels = col_lab
    row_labels = row_lab
    data=np.round(data.corr(method='pearson').abs(), decimals=2)
    data=np.array(data)
    fig, ax = plt.subplots()

    plt.axis('tight')
    heatmap = ax.pcolor(data, cmap='RdPu'),                  
    plt.colorbar(mappable=heatmap)    # put the major ticks at the middle of each cell
    ax.set_xticks(np.arange(data.shape[0])+0.5, minor=False)
    ax.set_yticks(np.arange(data.shape[1])+0.5, minor=False)

    ax.invert_yaxis()
    ax.xaxis.tick_top()    
    ax.set_xticklabels(row_labels, minor=False, rotation=90)
    ax.set_yticklabels(column_labels, minor=False)
    plt.show()
Run Code Online (Sandbox Code Playgroud)

我努力了plt.colorbar()。这也行不通。任何帮助都会很棒!

我看过这个问题:AttributeError while add colorbar in matplotlib但答案似乎不起作用:(

这是我的错误:

Traceback (most recent call last):
  File …
Run Code Online (Sandbox Code Playgroud)

python matplotlib colorbar

2
推荐指数
1
解决办法
7343
查看次数

在一个颜色条上绘制两个范围

是否可以让一个颜色条有两个范围?

基本上我有两个图(分开创建并粘贴到空白图像中).

它们使用相同的颜色图(热),但由于每个图中数据的性质,颜色在不同的范围内.基本上在colorbar的左侧,我希望范围为0-1,右边为0.75 -1.

可以使用一个图或完全图形创建颜色条.我想绘制一个颜色条.

我目前知道如何从右到左或彩条方向移动刻度线.但是,我似乎无法将蜱虫放在两边.

这是我用来绘制颜色条左边的刻度而不是默认右边的代码,但我似乎无法将它们放在两边.

    cb = plt.colorbar(sm)
    cb.ax.yaxis.set_ticks_position('left')
Run Code Online (Sandbox Code Playgroud)

python matplotlib colorbar

2
推荐指数
1
解决办法
658
查看次数

查找数据中的零元素数

我有代码:

def find_zeros(data):
    '''creates a list of the indexes of the zeros in the data'''
    zeroidx=np.where(np.any(data==0, axis=1))
    print zeroidx
    return len(zeroidx) 
Run Code Online (Sandbox Code Playgroud)

但结果是:

(array([525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537,
       538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550,
       551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563,
       564, 565], dtype=int64),)
Run Code Online (Sandbox Code Playgroud)

它给出了长度1.

如何找到数字数组的长度?

这会找到零的位置.基本上我只是想知道数据中有多少个零?还有更好的方法吗?

python numpy where zero

1
推荐指数
2
解决办法
123
查看次数

根据值替换DataFrame中的行

我想替换数据中的整行,但要满足该条件的行中的一列.即红色是数据帧

['1' 0.0 ' P']
['2' 0.0 ' S']
['3' 64  ' M']
['4' 70  ' M']



red=red.replace(to_replace=' M', value=0)
Run Code Online (Sandbox Code Playgroud)

返回结果:

['1' 0.0 ' P']
['2' 0.0 ' S']
['3' 64  0]
['4' 70  0]
Run Code Online (Sandbox Code Playgroud)

但我希望它能回归:

['1' 0.0 ' P']
['2' 0.0 ' S']
['3' 0  0]
['4' 0  0]
Run Code Online (Sandbox Code Playgroud)

python replace dataframe pandas

1
推荐指数
1
解决办法
1213
查看次数