любой обходной путь для настройки нескольких временных рядов в python (обновлено)? - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь настроить график iplot, отображающий несколько временных рядов, но iplot принимает только один параметр. Я проверил сюжетную документацию, и объект usinf go был упомянут. Но я все еще не в состоянии добавить пользовательские шрифты и водяной знак к сюжету. Может кто-нибудь мне помочь? Любая возможная идея, чтобы сделать эту работу?

минимальные данные и демонстрационный код

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

from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
from IPython.core.display import display, HTML
import matplotlib as mpl
import cufflinks as cf
import seaborn as sns
import pandas as pd
import numpy as np

# setup
display(HTML("<style>.container { width:35% !important; } .widget-select > select {background-color: gainsboro;}</style>"))
init_notebook_mode(connected=True)
np.random.seed(1)
mpl.rcParams['figure.dpi']= 440

# sample data from cufflinks
df = cf.datagen.lines()

# plotly
iplot([{
    'x': df.index,
    'y': df[col],
    'name': col
}  for col in df.columns])

плюс, я хочу сгладить вывод приведенного выше кода (который представляет собой график нескольких временных рядов), как я могу это сделать? Есть идеи? Спасибо

обновление

Я сделал это с matplotlib, но не знаю, как сделать то же самое в plotly. Вот мой скрипт для загрузки настроенного шрифта, водяного знака:

import matplotib.pyplot as plt
import matplotlib.font_manager as fm

fig, ax = plt.subplots(figsize=(10,6))

fname=r'C:\Users\Nunito-Black.ttf'
myfont=fm.FontProperties(fname=fname,size=50)
legend_fname=r'C:\Users\RobotoCondensed-Regular.ttf'
legend_font=fm.FontProperties(fname=legend_fname,size=20)
## some code for passing plot data to plotting function
ax.text(0.5, 0.5, 'mylogo',fontsize=60,fontproperties=myfont,color='black',
         transform=ax.transAxes,ha='center', va='center', alpha=0.3)

plt.show() 

Как я могу сделать то же самое в сюжетном графике? есть идеи?

1 Ответ

1 голос
/ 03 февраля 2020

Примечание : Это (пока) ответ.

Я не понимаю, что вы подразумеваете под гладкой в ​​первой части. В любом случае я вижу некоторые ненужные операции импорта, и мне кажется, что вы используете заговор со старым синтаксисом.

import plotly.graph_objs as go
import cufflinks as cf
import pandas as pd

df = cf.datagen.lines()

fig = go.Figure()
for col in df.columns:
    fig.add_trace(
        go.Scatter(x=df.index,
                   y=df[col],
                   name=col))

fig.show()

Вывод: enter image description here

Учтите, что в в этом случае вы можете использовать pd.util.testing.makeTimeDataFrame() вместо импорта cufflinks.

Во второй части я предлагаю вам прочитать документацию для go.Layout.font?, которая

   Supported dict properties:

        color

        family
            HTML font family - the typeface that will be
            applied by the web browser. The web browser
            will only be able to apply a font if it is
            available on the system which it operates.
            Provide multiple font families, separated by
            commas, to indicate the preference in which to
            apply fonts if they aren't available on the
            system. The plotly service (at https://plot.ly
            or on-premise) generates images on a server,
            where only a select number of fonts are
            installed and supported. These include "Arial",
            "Balto", "Courier New", "Droid Sans",, "Droid
            Serif", "Droid Sans Mono", "Gravitas One", "Old
            Standard TT", "Open Sans", "Overpass", "PT Sans
            Narrow", "Raleway", "Times New Roman".
        size

Использование в Python здесь здесь и, очевидно, версия js более гибкая, см. this

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...