Повернуть весь топор Matplotlib - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь использовать matplotlib для воспроизведения фигуры из недавней статьи ( см. Здесь и ниже). На рисунке они принимают стандартный график xy и поворачивают его на 45 градусов. Есть ли хороший способ сделать это в matplotlib и повернуть топор?

rank turbulence histogram

В настоящее время единственный способ найти это - относитесь к сюжету как к изображению, а затем комментируйте его по факту. Это кажется очень грязным, и кажется, что должен быть более хороший способ сделать это, манипулируя самим топором.

import numpy as np
import networkx as nx
from scipy import ndimage
import matplotlib.pyplot as plt

# Make sample data to plot, as a matrix (like a heat map)
sizes = [170,100,80,50]
p = np.array([[0.80,0.1,0.05,0.05],
              [0.10,0.9,0.02,0.02],
              [0.05,0.02,0.9,0.03],
              [0.05,0.02,0.03,0.9]])
p = p + np.random.uniform(0.0,0.05,p.shape)
p = p / p.sum(axis=0)
p = p + p.T - np.diag(p.diagonal())
G = nx.stochastic_block_model(sizes,p)

# Convert matrix into an image
im = nx.to_numpy_array(G) + 1
np.fill_diagonal(im,1)
imrot45 = ndimage.rotate(im, 315)
rot45_neg = (imrot45==0) * -1.0
rot45_neg[rot45_neg<0] = np.nan
implot = (imrot45+rot45_neg)

# Plot the image
fig, ax = plt.subplots(1,1,dpi=100,figsize=(6,6))
ax.imshow(implot)
ax.set_axis_off()
plt.show()
...