我试图创建一个极坐标图,在径向轴上有一个对数刻度,但我一直得到一个错误。下面是一些示例代码和错误。在笛卡尔坐标系下似乎很好,有人知道发生了什么吗
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.cm as cm
bazbins = np.linspace(0, 2*np.pi, 360)
fbins = np.logspace(np.log10(0.05), np.log10(0.5), 101)
theta, r = np.meshgrid(bazbins, fbins)
# Set up plot window
fig, ax = plt.subplots(figsize=(12,9))#, subplot_kw=dict(projection='polar'))
# polar
ax.set_theta_zero_location('N')
ax.set_theta_direction(-1)
ax.set_rscale('log')
# carthesia
#ax.set_yscale('log')
# Plot data
#ax.pcolormesh(theta, r, r)
plt.gca().invert_yaxis()
ax.contourf(theta, r, r)
ax.set_ylim((0.0, 0.5))
plt.show()
Tkinter回调中出现异常:
Traceback (most recent call last):
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1413, in __call__
return self.func(*args)
File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 236, in resize
self.show()
File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 239, in draw
FigureCanvasAgg.draw(self)
File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py", line 421, in draw
self.figure.draw(self.renderer)
File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "/usr/lib/pymodules/python2.7/matplotlib/figure.py", line 898, in draw
func(*args)
File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 1997, in draw
a.draw(renderer)
File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "/usr/lib/pymodules/python2.7/matplotlib/axis.py", line 1045, in draw
tick.draw(renderer)
File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "/usr/lib/pymodules/python2.7/matplotlib/axis.py", line 239, in draw
self.label1.draw(renderer)
File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "/usr/lib/pymodules/python2.7/matplotlib/text.py", line 591, in draw
ismath=ismath)
File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py", line 156, in draw_text
return self.draw_mathtext(gc, x, y, s, prop, angle)
File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py", line 145, in draw_mathtext
x = int(x) + ox
ValueError: cannot convert float NaN to integer
更新为
matplotlib v3.3.4
def scatter_logpolar_mpl
以使用'symlog'
,因为使用'log'
会导致posx and posy should be finite values
,并且'log-polar matplotlib'
的绘图为空李>原始答案
当前matplotlib和对数极坐标图存在更多问题
例如,尝试为极坐标图的matplotlib example中的半径添加一个小值,然后使用
set_rlim(0)
和set_rscale('log')
对其进行绘制(如这里的注释所示)。所有低于0.1的值都会得到一些特殊处理。这会影响r
轴上的刻度(注意完全错位的10e-2和10e-3)以及打印数据:这种行为似乎没有记录在案。我最终手动完成了日志转换(上面系列中的第三个绘图)。对于遇到此线程的其他人,以下是我的代码:
当我在设置绘图窗口的行中取出注释时,它会为我运行
这似乎是matplotlib中的一个错误。您不应该在
set_rscale
(或set_yscale
)之前调用set_rlim
(或set_ylim
)方法。此外,必须使用0或0.0作为下限调用set_rlim
或set_ylim
。下限的其他值也会导致崩溃。这个问题也发生在其他后端(我已经确认了gtkagg和pdf后端的问题)我为这个问题提交了一份bug报告,可以在here找到。如果此问题影响您,请转到错误报告页面并留下评论,让matplotlib开发人员知道此问题对用户很重要
相关问题 更多 >
编程相关推荐