Как контролировать размер метки вершины в textplot_network?

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

from matplotlib import pyplot as plt
from matplotlib import scale as mscale
from matplotlib import transforms as mtransforms
import numpy as np

def CustomScaleFactory(l, u):
    class CustomScale(mscale.ScaleBase):
        name = 'custom'

        def __init__(self, axis, **kwargs):
            mscale.ScaleBase.__init__(self)
            self.thresh = None #thresh

        def get_transform(self):
            return self.CustomTransform(self.thresh)

        def set_default_locators_and_formatters(self, axis):
            pass

        class CustomTransform(mtransforms.Transform):
            input_dims = 1
            output_dims = 1
            is_separable = True
            lower = l
            upper = u
            def __init__(self, thresh):
                mtransforms.Transform.__init__(self)
                self.thresh = thresh

            def transform(self, a):
                aa = a.copy()
                aa[a>self.lower] = a[a>self.lower]-(self.upper-self.lower)
                aa[(a>self.lower)&(a<self.upper)] = self.lower
                return aa

            def inverted(self):
                return CustomScale.InvertedCustomTransform(self.thresh)

        class InvertedCustomTransform(mtransforms.Transform):
            input_dims = 1
            output_dims = 1
            is_separable = True
            lower = l
            upper = u

            def __init__(self, thresh):
                mtransforms.Transform.__init__(self)
                self.thresh = thresh

            def transform(self, a):
                aa = a.copy()
                aa[a>self.lower] = a[a>self.lower]+(self.upper-self.lower)
                return aa

            def inverted(self):
                return CustomScale.CustomTransform(self.thresh)

    return CustomScale

mscale.register_scale(CustomScaleFactory(1.12, 8.88))

x = np.concatenate((np.linspace(0,1,10), np.linspace(9,10,10)))
xticks = np.concatenate((np.linspace(0,1,6), np.linspace(9,10,6)))
y = np.sin(x)
plt.plot(x, y, '.')
ax = plt.gca()
ax.set_xscale('custom')
ax.set_xticks(xticks)
plt.show()

enter image description here [/g0]

1
задан Guilherme Parreira 16 January 2019 в 16:16
поделиться

2 ответа

Как видно из исходного кода, размер шрифта не является аргументом, который вы можете контролировать в функции.

https://github.com/quanteda/quanteda/blob/master/R/textplot_network.R#L242-L256

Если вам действительно нужна эта функция, пожалуйста, отправьте запрос функции здесь:

https://github.com/quanteda/quanteda/issues/new/choose

0
ответ дан amatsuo_net 16 January 2019 в 16:16
поделиться

Если вы переключитесь на пакет visNetwork вместо этого в R - вы можете использовать дополнительный аргумент Node Label Size - он также имеет серверную часть на основе JS, поэтому полезен для других элементов текстовой маркировки

0
ответ дан Data Science 16 January 2019 в 16:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: