Я строю данные, используя клинья (то же самое применимо к патчам / кружкам / и т. Д.).
Это хорошо работает, но я хочу построить данные логарифмические.
Для обычных участков есть
plt.yscale('log')
plt.xscale('log')
но это не работает здесь, и приводит к:
ValueError: Данные не имеют положительных значений и поэтому не могут быть масштабированы.
Конечно, я мог бы преобразовать все свои данные в журнал и соответствующим образом скорректировать xticks и yticks, но мне было интересно, есть ли для этого автоматический способ matplotlib.
См. Рабочую часть моего кода ниже:
import matplotlib.pylot as plt
from matplotlib.patches import Wedge
import seaborn as sns
import numpy as np
from matplotlib.patches import Wedge
def dual_half_circle(center, radius, angle=0, ax=None, colors=('w','k'),
**kwargs):
"""
Add two half circles to the axes *ax* (or the current axes) with the
specified facecolors *colors* rotated at *angle* (in degrees).
"""
if ax is None:
ax = plt.gca()
theta1, theta2 = angle, angle + 180
w1 = Wedge(center, radius, theta1, theta2, fc=colors[0], **kwargs)
w2 = Wedge(center, radius, theta2, theta1, fc=colors[1], **kwargs)
for wedge in [w1, w2]:
ax.add_artist(wedge)
return [w1, w2]
fig, ax = plt.subplots(figsize=(30,15))
for i in range(10):
dual_half_circle((100*i, 100*i), radius=10, angle=90, ax=ax,colors=('r','b'))
plt.xlim(0,1000)
plt.ylim(0,1000)
plt.show()
Спасибо за вашу помощь!