2017-06-06 47 views
1

openpyxlのコンビネーションチャートで、秒のy軸スケールをどのようにオフ(または非表示)にしますか?openpyxlのコンビネーションチャートで、秒のy軸スケールをどのようにオフ(または非表示)にしますか?

私はスケールを非表示にする前と後の変化(私はXMLにアクセスするために「.zipファイル」にExcelファイルの拡張子を変更する)と比較することによって、XMLの違いを見つけることができます:私は

-<c:valAx> 
<c:axId val="156672520"/> 
-<c:scaling> 
<c:orientation val="minMax"/> 
</c:scaling> 
<c:delete val="0"/> 
<c:axPos val="r"/> 
<c:majorGridlines/> 
<c:numFmt sourceLinked="1" formatCode="0.0"/> 
<c:majorTickMark val="out"/> 
<c:minorTickMark val="none"/> 
<c:tickLblPos val="none"/>  # this changes from 'nextTo' 
<c:crossAx val="207247000"/> 
<c:crosses val="max"/> 
<c:crossBetween val="between"/> 
</c:valAx> 

をしました(最後の数行は「tickLblPos」であり)、これを試してみました:

mainchart = LineChart() 
mainchart.style = 12 
v2 = Reference(WorkSheetOne, min_col=1, min_row=2+CombBarLineDataOffsetFromTop, max_row=3+CombBarLineDataOffsetFromTop, max_col=13) 
mainchart.add_data(v2, titles_from_data=True, from_rows=True) 

mainchart.layout = Layout(
    ManualLayout(
    x=0.12, y=0.25, # position from the top 
    h=0.9, w=0.75, # this is scaling the chart into the container 
    xMode="edge", 
    yMode="edge", 
    ) 
) 

mainchart.title = "Chart Title" 

# Style the lines 
s1 = mainchart.series[0] 
#Marker type 
s1.marker.symbol = "diamond" # triangle 
s1.marker.size = 9 
s1.marker.graphicalProperties.solidFill = "C00000" # Marker filling 
s1.marker.graphicalProperties.line.solidFill = "000000" # Marker outline 
s1.graphicalProperties.line.noFill = False 
# Line color 
s1.graphicalProperties.line.solidFill = "000000" # line color 

s2 = mainchart.series[1] 
s2.graphicalProperties.line.solidFill = "000000" 
s2.graphicalProperties.line.dashStyle = "dash" 

mainchart.dataLabels = DataLabelList() 

mainchart.dataLabels.showVal = False 
mainchart.dataLabels.dLblPos = 't' 
mainchart.height = 15 
mainchart.width = 39 

#Create the Chart 
chart2 = BarChart() 
chart2.type = "col" 
chart2.style = 10 # simple bar 
chart2.y_axis.axId = 0 

dataone = Reference(WorkSheetOne, min_col=2, min_row=CombBarLineDataOffsetFromTop+1, max_row=CombBarLineDataOffsetFromTop+1, max_col=13) 
doneseries = Series(dataone, title="Series Title") 
chart2.append(doneseries) 


cats = Reference(WorkSheetOne, min_col=2, min_row=CombBarLineDataOffsetFromTop, max_row=CombBarLineDataOffsetFromTop, max_col=13) 
chart2.set_categories(cats) 

# Set the series for the chart data 
series3Total = chart2.series[0] 
fill3Total = PatternFillProperties(prst="pct5") 
fill3Total.foreground = ColorChoice(srgbClr='996633') # brown 
fill3Total.background = ColorChoice(srgbClr='996633') 
series3Total.graphicalProperties.pattFill = fill3Total 

chart2.dataLabels = DataLabelList() 
chart2.dataLabels.showVal = False 
chart2.shape = 2 

mainchart.y_axis.crosses = "max" 
mainchart.y_axis.tickLblPos = "none" # nextTo -- this doesn't work 

mainchart += chart2 

WorkSheetOne.add_chart(mainchart, 'A1') 

どのように私はopenpyxlを持つ属性へのXMLの違いを翻訳することができますか?

答えて

1

ここでの問題は、時には3値論理を使用するいくつかの属性のデフォルト値の一部であるため、None!= "none"です。デフォルトは "nextTo"なので<c:tickLblPos /> != <c:tickLblPos val="none"/>です。これは、Pythonのセマンティクス(3値のロジックは常に間違っています)を混乱させます。デフォルトでは、値がNoneの場合は属性を設定しません。これは実際にChartMLにのみ影響し、関連するオブジェクトの記述子にいくつかのロジックを追加して、必要なところに "none"が書き込まれるようにしました。

しかし、このコードはまだ公開されていません。プレビューしたい場合は、私の電子メールで連絡してください。

関連する問題