如何将输出居中放置在Python Jupyter笔记本上?

Sco*_*tEU 6 python plotly jupyter-notebook

我有一份在Jupyter Notebook中创建的报告。我出于审美原因希望将输出(图)居中。

我已经尝试过这里给出的答案:

在IPython Notebook上居中输出

但是,这不起作用。

我确实发现这可以在Stackoverflow上工作(ipython Notebook中的居中对齐输出

CSS = """
.output {
    align-items: center;
}
"""

HTML('<style>{}</style>'.format(CSS))
Run Code Online (Sandbox Code Playgroud)

但是,虽然它使图居中,但当图宽且不需要居中时,它会扩展它并使它比我不需要的页面更宽。我已经尝试过像上面说的那样调整输出边距区域,但是它要么将其再次推到左侧,要么将其挤压到需要滚动条的位置(再次,我不想这么做)

在此处输入图片说明

任何人有任何建议吗?我认为这将是标准且容易的,但显然不是(如果无法实现,仅将代码块居中的方法将是一个完美的解决方法?)

即此表的中心:

在此处输入图片说明

这是由以下代码产生的:

df = pd.DataFrame(a01) 

new_df01 = df[['Call','FirstReceivedDate','Value']]
new_df01['month'] = pd.Categorical(new_df01['FirstReceivedDate'].dt.strftime('%b'), 
                                         categories=vals, ordered=True) 

groupA01 = new_df01.groupby(['Call']).agg({'Value':sum, 'FirstReceivedDate':'count'}).rename(columns={'FirstReceivedDate':'Count'})
groupA01['Value'] = groupA01['Value'].map('{:,.2f}'.format)

def hover(hover_color="#F1C40F"):
    return dict(selector="tr:hover",
                props=[("background-color", "%s" % hover_color)])

styles2 = [
    hover(),
    dict(selector="th", props=[("font-size", "80%"),
                               ("font-family", "Gill Sans MT"),
                               ("color",'white'),
                               ('background-color', 'rgb(11, 48, 79)'),
                               ("text-align", "center")]),
    dict(selector="td", props=[("font-size", "75%"),
                               ("font-family", "Gill Sans MT"),
                               ("text-align", "center")]),
    dict(selector="tr", props=[("line-height", "11px")]),
    dict(selector="caption", props=[("caption-side", "bottom")])
]


html2 = (groupA01.style.set_table_styles(styles2)
          .set_caption(""))
html2
Run Code Online (Sandbox Code Playgroud)

谢谢!

添加代码以显示热图图:

dfreverse = df_hml.values.tolist()
dfreverse.reverse()

colorscale = [[0,'#FFFFFF'],[0.5, '#454D59'], [1, '#F1C40F']]

x = [threeYr,twoYr,oneYr,Yr]
y = ['March', 'February', 'January', 'December', 'November', 'October', 'September', 'August', 'July', 'June', 'May', 'April']
z = dfreverse

hovertext = list()
for yi, yy in enumerate(y):
    hovertext.append(list())
    for xi, xx in enumerate(x):
        hovertext[-1].append('Count: {}<br />{}<br />{}'.format(z[yi][xi],yy, xx))

data = [plotly.graph_objs.Heatmap(z=z,
                                  colorscale=colorscale,
                                  x=x,
                                  y=y,
                                  hoverinfo='text',
                                  text=hovertext)]

layout = go.Layout(
    autosize=False,
    font=Font(
        family="Gill Sans MT",
        size = 11
    ),
    width=600,
    height=450,
    margin=go.Margin(
        l=0,
        r=160,
        b=50,
        t=100,
        pad=3
    ),
        xaxis=dict(
        title='',
        showgrid=False,
        titlefont=dict(
           # family='Gill sans, monospace',
            size=12,
            #color='#7f7f7f'
        ),
        showticklabels=True,
        tickangle=25,
        tickfont=dict(
            family="Gill Sans MT",
            size=12,
            color='black'
        ),
    ),
    yaxis=dict(
        title='',
        showgrid=False,
        titlefont=dict(
            #family='Gill sans',
            #size=12,
            #color='#7f7f7f'
        ),
        showticklabels=True,
        tickangle=25,
        tickfont=dict(
            family="Gill Sans MT",
            size=12,
            color='black'
        ),
)
)

fig = plotly.graph_objs.Figure(data=data, layout=layout)
plotly.offline.iplot(fig,config={"displayModeBar": False},show_link=False,filename='pandas-heatmap')
Run Code Online (Sandbox Code Playgroud)

Nar*_*ali 5

请尝试使用该类来使图形居中,因为没有提供数据框,因此我正在创建一个带有随机数据框的图,以演示该类的功能。请检查一下。

码:

from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
from IPython.display import display, HTML
from plotly.graph_objs import *
import numpy as np
init_notebook_mode(connected=True)

display(HTML("""
<style>
.output {
    display: flex;
    align-items: center;
    text-align: center;
}
</style>
"""))
iplot([{"x": [1, 2, 3], "y": [3, 1, 6]}])
iplot([Box(y = np.random.randn(50), showlegend=False) for i in range(45)], show_link=False)
x = np.random.randn(2000)
y = np.random.randn(2000)
iplot([Histogram2dContour(x=x, y=y, contours=Contours(coloring='heatmap')),
       Scatter(x=x, y=y, mode='markers', marker=Marker(color='white', size=3, opacity=0.3))], show_link=False)
Run Code Online (Sandbox Code Playgroud)

输出:

在此处输入图片说明

  • 嘿,首先感谢您的帮助,您的代码确实使输出居中,但就像我之前的问题一样,当您将其导出到 HTML 时,它会出于某种原因压缩图表并添加水平滚动条:/...我真的不知道为什么。 (2认同)