我在使用时尝试更改图形尺寸时遇到了一些麻烦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)
任何帮助都会很棒!

我有一个关于循环从数据框中绘制多个子图时收到的错误的问题.
我的数据框有很多列,我在其中循环以获得每列的子图.
这是我的代码
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)
如果第一个图表生成正常,或者为什么产生第二个图形,我看不出这个错误来自哪里?
感谢您的任何见解
我有下面的代码,我想将数据中的所有零转换为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中绘制零值.
我正在尝试编写一个函数来删除其中包含零值的所有行.这不是来自我的代码,而是我正在使用的想法的一个示例:
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中索引的行?对不起,我对此很新,任何帮助都会非常感激.
我在尝试调整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'的文档.
另外根据我的理解,你必须在你的情节中添加一个"标签"才能创建一个图例.但是,顶部子图的所有数据是否同时绘制?

我遇到的问题似乎很容易解释答案.我正在努力将我的数组元素转换为浮点数(这样我可以繁殖,添加它们等)
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) 我知道这是有据可查的,但我正在努力在我的代码中实现这一点。
我想用颜色图对图表下方的区域进行着色。是否有可能有一种颜色,即从超过 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作为一个选项。为什么下图没有显示颜色图?

我正在尝试将一系列的值添加到数据帧中.我不是要将列添加到数据帧的末尾,即在数据框中创建一个额外的列.
我有一个与数据框中的列长度相同的系列.我想将系列中的值添加到框架中的每一列.我试过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_track并reader.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)
有任何想法吗.
我在使用彩色地图时遇到了一些麻烦.基本上,我想要制作的内容与下图相似.
在底部的插曲,我想能够绘制相应的颜色,但跨越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)
风是一维阵列
我正在尝试创建一个相关矩阵。创建矩阵工作正常,直到我尝试添加颜色条。
这是我当前的代码:
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) 是否可以让一个颜色条有两个范围?
基本上我有两个图(分开创建并粘贴到空白图像中).
它们使用相同的颜色图(热),但由于每个图中数据的性质,颜色在不同的范围内.基本上在colorbar的左侧,我希望范围为0-1,右边为0.75 -1.
可以使用一个图或完全图形创建颜色条.我想绘制一个颜色条.
我目前知道如何从右到左或彩条方向移动刻度线.但是,我似乎无法将蜱虫放在两边.
这是我用来绘制颜色条左边的刻度而不是默认右边的代码,但我似乎无法将它们放在两边.
cb = plt.colorbar(sm)
cb.ax.yaxis.set_ticks_position('left')
Run Code Online (Sandbox Code Playgroud) 我有代码:
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.
如何找到数字数组的长度?
这会找到零的位置.基本上我只是想知道数据中有多少个零?还有更好的方法吗?
我想替换数据中的整行,但要满足该条件的行中的一列.即红色是数据帧
['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)