我有一系列的点x和y存储在numpy数组中.那些代表x(t)和y(t),其中t = 0 ... T-1
我正在使用绘制散点图
import matplotlib.pyplot as plt
plt.scatter(x,y)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我想有一个颜色图表示时间(因此根据numpy数组中的索引着色点)
最简单的方法是什么?
我使用matplotlib在python中绘制一些数据,并且图表需要标准颜色条.数据由一系列包含频率信息的NxM矩阵组成,因此简单的imshow()图给出了描述频率的颜色的2D直方图.每个矩阵包含不同但重叠范围的数据.Imshow将每个矩阵中的数据归一化到0-1范围,这意味着,例如,矩阵A的图将看起来与矩阵2*A的图相同(尽管颜色条将显示两倍的值).我想要的是红色,例如,对应于所有图中的相同频率.换句话说,单个彩条就足以满足所有情节.任何建议将不胜感激.
我想制作4 imshow个子图,但它们都共享相同的颜色图.Matplotlib根据矩阵的条目自动调整色彩图上的比例.例如,如果我的一个矩阵的所有条目都为10而另一个条目的所有条目都等于5并且我使用了Greys色彩映射,那么我的一个子图应该是完全黑色而另一个应该是完全灰色的.但他们两个最终都变成了黑色.如何使所有子图在色图上共享相同的比例?
我正在开展一个项目,我需要将10行3列的绘图网格组合在一起.虽然我已经能够绘制并绘制子图,但是我无法生成一个没有空格的漂亮图,例如下面的gridspec文档.
.
我尝试了以下帖子,但仍然无法像示例图像中那样完全删除空白区域.有人可以给我一些指导吗?谢谢!
以下是我的代码.完整的脚本在GitHub上.注意:images_2和images_fool都是具有形状(1032,10)的扁平图像的numpy阵列,而delta是形状的图像阵列(28,28).
def plot_im(array=None, ind=0):
"""A function to plot the image given a images matrix, type of the matrix: \
either original or fool, and the order of images in the matrix"""
img_reshaped = array[ind, :].reshape((28, 28))
imgplot = plt.imshow(img_reshaped)
# Output as a grid of 10 rows and 3 cols with first column being original, second being
# delta and third column being adversaril
nrow = 10
ncol = 3 …Run Code Online (Sandbox Code Playgroud) 我想绘制一个(垂直)颜色条,每侧有两个不同的刻度(对应于相同数量的两个不同单位).一边是华氏,另一边是摄氏.显然,我需要单独指定每一方的刻度.
知道我怎么能这样做吗?
import xarray as xr
import cartopy.crs as ccrs
USA_PROJ = ccrs.AlbersEqualArea(central_longitude=-97., central_latitude=38.)
g_simple = ds_by_month.t2m.plot(x='longitude',
y='latitude',
col='month',
col_wrap=6,
aspect=ds.dims['longitude'] / ds.dims['latitude'],
subplot_kws=dict(projection=USA_PROJ),
add_colorbar=False,
transform=ccrs.PlateCarree())
g_simple.add_colorbar(orientation='horizontal')
for ax in g_simple.axes.ravel():
ax.coastlines()
ax.set_extent([-121, -72, 22.5, 50])
plt.tight_layout()
plt.show()
Run Code Online (Sandbox Code Playgroud)
如何确保颜色条与图形重叠?即使我使用xarray默认颜色条,也会发生重叠.
我想用Python matplotlib创建包含许多(100)子图的绘图.我找不到合适的语法:
我想要的东西(这不起作用)
plt.subplot(10,10,i,X1, Y)
Run Code Online (Sandbox Code Playgroud)
在一个循环中,i从0到99,然后
plt.show()
Run Code Online (Sandbox Code Playgroud)
许多教程中都提供了语法,以便只有很少的子图.然后,语法可以
plt.close('all')
fig = plt.figure()
ax1 = plt.subplot(221)
ax2 = plt.subplot(223)
ax3 = plt.subplot(122)
example_plot(ax1)
example_plot(ax2)
example_plot(ax3)
plt.tight_layout()
Run Code Online (Sandbox Code Playgroud)
对于我的问题,我想我不能使用与我一样的语法plt.subplot(10101),等等,我不明白.
你有解决方案吗?
谢谢
我正在尝试将色条添加到光谱图中.我已经尝试了我在网上找到的每一个例子和问题线程,但没有人解决过这个问题
请注意,'spl1'(数据拼接1)是来自ObsPy的跟踪.
我的代码是:
fig = plt.figure()
ax1 = fig.add_axes([0.1, 0.75, 0.7, 0.2]) #[left bottom width height]
ax2 = fig.add_axes([0.1, 0.1, 0.7, 0.60], sharex=ax1)
ax3 = fig.add_axes([0.83, 0.1, 0.03, 0.6])
t = np.arange(spl1[0].stats.npts) / spl1[0].stats.sampling_rate
ax1.plot(t, spl1[0].data, 'k')
ax,spec = spectrogram(spl1[0].data,spl1[0].stats.sampling_rate, show=False, axes=ax2)
ax2.set_ylim(0.1, 15)
fig.colorbar(spec, cax=ax3)
Run Code Online (Sandbox Code Playgroud)
它出现了错误:
Traceback (most recent call last):
File "<ipython-input-18-61226ccd2d85>", line 14, in <module>
ax,spec = spectrogram(spl1[0].data,spl1[0].stats.sampling_rate, show=False, axes=ax2)
TypeError: 'Axes' object is not iterable
Run Code Online (Sandbox Code Playgroud)
迄今为止的最佳结果:
用以下代码替换上面的最后3行:
ax = spectrogram(spl1[0].data,spl1[0].stats.sampling_rate, show=False, axes=ax2)
ax2.set_ylim(0.1, 15)
fig.colorbar(ax,cax=ax3)
Run Code Online (Sandbox Code Playgroud)
产生这个: …
我正在尝试将颜色条添加到由两个具有相同宽高比的子图组成的图中,即set_aspect('equal'):

用于创建此图的代码可以在此IPython笔记本中找到.
使用下面显示的代码(以及笔记本中的代码)创建的图像是我可以获得的最佳结果,但它仍然不是我想要的.
plt.subplot(1,2,1)
plt.pcolormesh(rand1)
plt.gca().set_aspect('equal')
plt.subplot(1,2,2)
plt.pcolormesh(rand2)
plt.gca().set_aspect('equal')
plt.tight_layout()
from mpl_toolkits.axes_grid1 import make_axes_locatable
divider = make_axes_locatable(plt.gca())
cax = divider.append_axes("right", size="5%", pad=0.05)
plt.colorbar(cax=cax)
Run Code Online (Sandbox Code Playgroud)

这个问题似乎有关:
我想做一些类似于http://matplotlib.org/examples/pylab_examples/hist2d_log_demo.html的内容,但我已经读到使用pylab代替python交互模式以外的代码是不好的做法所以我想这样做matplotlib.pyplot.但是,我无法弄清楚如何使用pyplot使这段代码工作.使用,pylab,给出的例子是
from matplotlib.colors import LogNorm
from pylab import *
#normal distribution center at x=0 and y=5
x = randn(100000)
y = randn(100000)+5
hist2d(x, y, bins=40, norm=LogNorm())
colorbar()
show()
Run Code Online (Sandbox Code Playgroud)
我尝试了很多
import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
h1 = ax1.hist2d([1,2],[3,4])
Run Code Online (Sandbox Code Playgroud)
从这里我已经尝试了plt.colorbar(h1) plt.colorbar(ax1) plt.colorbar(fig) ax.colorbar()等等的一切,我无法得到任何工作.
总的来说,即使在阅读了http://matplotlib.org/faq/usage_faq.html之后,老实说我对pylab和pyplot之间的关系还不是很清楚.例如show()在pylab中似乎变成plt.show()了pyplot,但由于某种原因colorbar不成为plt.colorbar()?
例如,
python ×9
matplotlib ×8
colorbar ×2
graphics ×1
numpy ×1
plot ×1
python-2.7 ×1
spectrogram ×1
subplot ×1
xarray ×1