Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在绘图中增加子批次的yticklabel与主yticklabel之间的间距?_Python_Plotly_Plotly Python - Fatal编程技术网

Python 如何在绘图中增加子批次的yticklabel与主yticklabel之间的间距?

Python 如何在绘图中增加子批次的yticklabel与主yticklabel之间的间距?,python,plotly,plotly-python,Python,Plotly,Plotly Python,我正在有计划地学习,并试图定制一个子地块。 我需要做以下事情: 仅使子Ytick标签为彩色,而不是Ytick。 例如,将“成功”设为绿色,但按原样选择“0.40%和0.20%” 增加子批次标签和主标签之间的间距。 例如,将主ylabel错误率(%)置于子批次ylabel现状之外 情节 代码 将numpy导入为np 作为pd进口熊猫 从plotly.subplot导入make_子地块 导入plotly.graph_对象作为go df=pd.数据帧({'Month':['2020-

我正在有计划地学习,并试图定制一个子地块。 我需要做以下事情:

  • 仅使子Ytick标签为彩色,而不是Ytick。
    • 例如,将“成功”设为绿色,但按原样选择“0.40%和0.20%”
  • 增加
    子批次标签
    主标签
    之间的间距。
    • 例如,将主ylabel
      错误率(%)
      置于子批次ylabel
      现状之外
情节

代码
将numpy导入为np
作为pd进口熊猫
从plotly.subplot导入make_子地块
导入plotly.graph_对象作为go
df=pd.数据帧({'Month':['2020-01-01','2020-02-01','2020-03-01','2020-04-01','2020-05-01','2020-06-01'],
“站点A:[0.0006171,0.00074800000000001,0.0004113999999997,0.0005422999999999999,9.35e-05,0.0011407],
“站点B”:[0.0003927000000000001,0.0026,0.0008041000000000001,0.0005797,0.000878900000000001,0.0004301000000001],
“现场C”:[0.0075548,0.0045815000000000005,0.0033473,0.0016455999999999,0.0023375,0.00229],
‘场地D’:[0.0007854000000000001、0.0003927000000000001、0.0013277、0.000523599999999999999、0.000822799999999999、0.00160820000000002],
“站点E:[0.0,0.00074800000000001,0.0,0.00155209999999998,0.0005984000000000001,0.00014],
“站点F:[0.0,0.00072929999999999,0.0,0.0002431,0.0,0.0],
“站点G:[0.000691900000000001,0.0008976000000000001,0.000542299999999999,0.0007667,0.000841499999999999,0.0008],
‘场地H’:[0.00257,0.00324,0.00512,0.00197,0.00091999999999999,0.0004301000000000001],
“站点I:[0.0013277,0.0,0.0,0.0,0.0,0.0,0.0013277]})
df['Month']=pd.to_datetime(df['Month']]
df=df.set_索引(“月”)
图=生成子图(行=3,列=3,
开始单元=“左上角”,
列宽=[1200]*3,
x_title=‘月份’,
y_title='错误率(%)',
子地块标题=(“场地H”、“场地E”、“场地B”,
“场地C”、“场地G”、“场地F”,
“场地D”、“场地I”、“场地A”,
)
)
图1添加分散(x=df.index,y=df['Site H'],行=1,列=1,showlegend=False,行=dict(color='darkgreen'),模式='lines+markers',名称='Site H')
图2添加散射(x=df.index,y=df['Site E E'],行=1,列=2,showlegend=False,行=dict(color='limegreen'))
图1添加散射(x=df.index,y=df['Site B'],行=1,列=3,showlegend=False,行=dict(color='lightgreen'))
图.添加散射(x=df.index,y=df['Site C'],行=2,列=1,showlegend=False,行=dict(color='black'))
图2添加散点(x=df.index,y=df['Site G'],行=2,列=2,showlegend=False,行=dict(color='gray'))
图2添加散射(x=df.index,y=df['Site F'],行=2,列=3,showlegend=False,行=dict(color='silver'))
图1添加散点(x=df.index,y=df['Site D'],行=3,列=1,showlegend=False,行=dict(color='darkred'))
图2添加散点(x=df.index,y=df['Site I'],行=3,列=2,showlegend=False,行=dict(color='tomato'))
图1添加散点(x=df.index,y=df['Site A'],行=3,列=3,showlegend=False,行=dict(color='lightsalmon'))
图更新_xaxes(tickangle=90,tickformat=“%b”)
图更新_yaxes(tickformat=“.2%”)
图:更新(行=1,列=1,标题='Success',颜色='darkgreen')
图:更新图片(行=2,列=1,标题为“现状”,颜色为“黑色”)
图:更新(行=3,列=1,标题=dict(text='Watch',standoff=10),颜色='darkred')
图1.2.2.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.2.2.2.2.2.2.1.1.1(
title='2020月站点错误率',
标题x=0.5,
autosize=False,
宽度=800,
高度=800,
页边(
l=80,
r=30,
b=80,
t=80,
pad=0
),
纸张\u bgcolor=“LightSteelBlue”,
)
图2(图3)
1。Y轴标题颜色 要设置y轴标题颜色,请更改

fig.update_yaxes(row=1, col=1, title = dict(text = 'Success', color='darkgreen'))
为此:

fig.update_yaxes(row=1, col=1, title='Success')
fig.update_yaxes(row=1, col=1, title_font_color="darkgreen")
原始appraoch将与该特定子批次关联的所有文本属性的颜色设置为
“暗绿色”
。建议的方法仅更改轴标题的颜色,其余的保持不变

2.增加主y记号标签和子批次y记号标签之间的间距。 似乎最好的方法是在
make\u subplot
中删除
y\u title
的定义,因为该特定属性似乎是。然后使用
margin=dict(l=120…
在子地块左侧留出更多空间,并使用
图在适当位置添加注释。如果您确实想在
'Status'
之外显示
'Erro Rate%
,您可以使用:

fig.add_annotation(dict(font=dict(color="black",size=14),
                            x=-0.16,
                            y=0.5,
                            showarrow=False,
                            text='Error Rate (%)',
                            textangle=-90,
                            xref="paper",
                            yref="paper"
                           )
                  )
情节

完整代码
谢谢。这帮我学到了一些新东西。我有一个小的后续问题。如何使Y轴刻度为0.0%0.1%。。。所有子批次的0.8%?我尝试了
tickvals=[values]
,但没有成功。非常感谢您的帮助。@MilkyWay001对不起。。。。直到现在我才看到你的评论。这是你还在想的吗?
import numpy as np
import pandas as pd


from plotly.subplots import make_subplots
import plotly.graph_objects as go

df = pd.DataFrame({'Month': ['2020-01-01', '2020-02-01', '2020-03-01', '2020-04-01', '2020-05-01', '2020-06-01'],
          'Site A': [0.0006171, 0.0007480000000000001, 0.00041139999999999997, 0.0005422999999999999, 9.35e-05, 0.0011407],
          'Site B': [0.0003927000000000001, 0.0026, 0.0008041000000000001, 0.0005797, 0.0008789000000000001, 0.0004301000000000001],
          'Site C': [0.0075548, 0.0045815000000000005, 0.0033473, 0.0016455999999999999, 0.0023375, 0.00229],
          'Site D': [0.0007854000000000001, 0.0003927000000000001, 0.0013277, 0.0005235999999999999, 0.0008227999999999999, 0.0016082000000000002],
          'Site E': [0.0, 0.0007480000000000001, 0.0, 0.0015520999999999998, 0.0005984000000000001, 0.00014],
          'Site F': [0.0, 0.0007292999999999999, 0.0, 0.0002431, 0.0, 0.0],
          'Site G': [0.0006919000000000001, 0.0008976000000000001, 0.0005422999999999999, 0.0007667, 0.0008414999999999999, 0.0008],
          'Site H': [0.00257, 0.00324, 0.00512, 0.00197, 0.0009199999999999999, 0.0004301000000000001],
          'Site I': [0.0013277, 0.0, 0.0, 0.0, 0.0, 0.0013277]})


df['Month'] = pd.to_datetime(df['Month'])
df = df.set_index('Month')


fig = make_subplots(rows=3,cols=3,
                    start_cell='top-left',
                    column_widths = [1200]*3,
                    x_title = 'Month',
                    #y_title = 'Error Rate (%)',
                    subplot_titles=("Site H", "Site E", "Site B",
                                    "Site C", "Site G", "Site F",
                                    "Site D", "Site I", "Site A",
                                    )
                   )

fig.add_scatter(x=df.index, y=df['Site H'],  row=1, col=1, showlegend=False, line=dict(color='darkgreen'),  mode='lines+markers', name='Site H')
fig.add_scatter(x=df.index, y=df['Site E'],  row=1, col=2, showlegend=False, line=dict(color='limegreen'))
fig.add_scatter(x=df.index, y=df['Site B'],  row=1, col=3, showlegend=False, line=dict(color='lightgreen'))

fig.add_scatter(x=df.index, y=df['Site C'],  row=2, col=1, showlegend=False, line=dict(color='black'))
fig.add_scatter(x=df.index, y=df['Site G'],  row=2, col=2, showlegend=False, line=dict(color='gray'))
fig.add_scatter(x=df.index, y=df['Site F'],  row=2, col=3, showlegend=False, line=dict(color='silver'))

fig.add_scatter(x=df.index, y=df['Site D'],  row=3, col=1, showlegend=False, line=dict(color='darkred'))
fig.add_scatter(x=df.index, y=df['Site I'],  row=3, col=2, showlegend=False, line=dict(color='tomato'))
fig.add_scatter(x=df.index, y=df['Site A'],  row=3, col=3, showlegend=False, line=dict(color='lightsalmon'))

fig.update_xaxes(tickangle=90, tickformat="%b")
fig.update_yaxes(tickformat=".2%")

fig.update_yaxes(row=1, col=1, title='Success')
fig.update_yaxes(row=1, col=1, title_font_color="darkgreen", autorange = True)
##fig.update_yaxes(row=1, col=1, title = dict(text = 'Success', color='darkgreen'))

fig.update_yaxes(row=2, col=1, title=dict(text='Status Quo',standoff=10), color='black', autorange = True)
fig.update_yaxes(row=3, col=1, title=dict(text='Watch', standoff=10), color='darkred', autorange = True)

fig.update_layout(
    title='2020 Monthy Error Rate by Site',
    title_x=0.5,
    autosize=False,
    width=800,
    height=800,
    margin=dict(
        l=120,
        r=30,
        b=80,
        t=80,
        pad=0
    ),
    paper_bgcolor="LightSteelBlue",
)

fig.add_annotation(dict(font=dict(color="black",size=14),
                            x=-0.16,
                            y=0.5,
                            showarrow=False,
                            text='Error Rate (%)',
                            textangle=-90,
                            xref="paper",
                            yref="paper"
                           )
                  )


fig.show()