简 介: 本文给出了利用Matplotlib中的 twinx() 完成同一个图表中绘制具有两个 Y-轴的曲线。绘制每一个曲线的方法与普通的Plot没有什么两样。
关键词
: matplotlib,双Y轴
#mermaid-svg-69bNuolHk2vVDqq2 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-69bNuolHk2vVDqq2 .label text{fill:#333}#mermaid-svg-69bNuolHk2vVDqq2 .node rect,#mermaid-svg-69bNuolHk2vVDqq2 .node circle,#mermaid-svg-69bNuolHk2vVDqq2 .node ellipse,#mermaid-svg-69bNuolHk2vVDqq2 .node polygon,#mermaid-svg-69bNuolHk2vVDqq2 .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-69bNuolHk2vVDqq2 .node .label{text-align:center;fill:#333}#mermaid-svg-69bNuolHk2vVDqq2 .node.clickable{cursor:pointer}#mermaid-svg-69bNuolHk2vVDqq2 .arrowheadPath{fill:#333}#mermaid-svg-69bNuolHk2vVDqq2 .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-69bNuolHk2vVDqq2 .flowchart-link{stroke:#333;fill:none}#mermaid-svg-69bNuolHk2vVDqq2 .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-69bNuolHk2vVDqq2 .edgeLabel rect{opacity:0.9}#mermaid-svg-69bNuolHk2vVDqq2 .edgeLabel span{color:#333}#mermaid-svg-69bNuolHk2vVDqq2 .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-69bNuolHk2vVDqq2 .cluster text{fill:#333}#mermaid-svg-69bNuolHk2vVDqq2 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-69bNuolHk2vVDqq2 .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-69bNuolHk2vVDqq2 text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-69bNuolHk2vVDqq2 .actor-line{stroke:grey}#mermaid-svg-69bNuolHk2vVDqq2 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-69bNuolHk2vVDqq2 .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-69bNuolHk2vVDqq2 #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-69bNuolHk2vVDqq2 .sequenceNumber{fill:#fff}#mermaid-svg-69bNuolHk2vVDqq2 #sequencenumber{fill:#333}#mermaid-svg-69bNuolHk2vVDqq2 #crosshead path{fill:#333;stroke:#333}#mermaid-svg-69bNuolHk2vVDqq2 .messageText{fill:#333;stroke:#333}#mermaid-svg-69bNuolHk2vVDqq2 .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-69bNuolHk2vVDqq2 .labelText,#mermaid-svg-69bNuolHk2vVDqq2 .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-69bNuolHk2vVDqq2 .loopText,#mermaid-svg-69bNuolHk2vVDqq2 .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-69bNuolHk2vVDqq2 .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-69bNuolHk2vVDqq2 .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-69bNuolHk2vVDqq2 .noteText,#mermaid-svg-69bNuolHk2vVDqq2 .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-69bNuolHk2vVDqq2 .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-69bNuolHk2vVDqq2 .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-69bNuolHk2vVDqq2 .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-69bNuolHk2vVDqq2 .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-69bNuolHk2vVDqq2 .section{stroke:none;opacity:0.2}#mermaid-svg-69bNuolHk2vVDqq2 .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-69bNuolHk2vVDqq2 .section2{fill:#fff400}#mermaid-svg-69bNuolHk2vVDqq2 .section1,#mermaid-svg-69bNuolHk2vVDqq2 .section3{fill:#fff;opacity:0.2}#mermaid-svg-69bNuolHk2vVDqq2 .sectionTitle0{fill:#333}#mermaid-svg-69bNuolHk2vVDqq2 .sectionTitle1{fill:#333}#mermaid-svg-69bNuolHk2vVDqq2 .sectionTitle2{fill:#333}#mermaid-svg-69bNuolHk2vVDqq2 .sectionTitle3{fill:#333}#mermaid-svg-69bNuolHk2vVDqq2 .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-69bNuolHk2vVDqq2 .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-69bNuolHk2vVDqq2 .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-69bNuolHk2vVDqq2 .grid path{stroke-width:0}#mermaid-svg-69bNuolHk2vVDqq2 .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-69bNuolHk2vVDqq2 .task{stroke-width:2}#mermaid-svg-69bNuolHk2vVDqq2 .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-69bNuolHk2vVDqq2 .taskText:not([font-size]){font-size:11px}#mermaid-svg-69bNuolHk2vVDqq2 .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-69bNuolHk2vVDqq2 .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-69bNuolHk2vVDqq2 .task.clickable{cursor:pointer}#mermaid-svg-69bNuolHk2vVDqq2 .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-69bNuolHk2vVDqq2 .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-69bNuolHk2vVDqq2 .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-69bNuolHk2vVDqq2 .taskText0,#mermaid-svg-69bNuolHk2vVDqq2 .taskText1,#mermaid-svg-69bNuolHk2vVDqq2 .taskText2,#mermaid-svg-69bNuolHk2vVDqq2 .taskText3{fill:#fff}#mermaid-svg-69bNuolHk2vVDqq2 .task0,#mermaid-svg-69bNuolHk2vVDqq2 .task1,#mermaid-svg-69bNuolHk2vVDqq2 .task2,#mermaid-svg-69bNuolHk2vVDqq2 .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-69bNuolHk2vVDqq2 .taskTextOutside0,#mermaid-svg-69bNuolHk2vVDqq2 .taskTextOutside2{fill:#000}#mermaid-svg-69bNuolHk2vVDqq2 .taskTextOutside1,#mermaid-svg-69bNuolHk2vVDqq2 .taskTextOutside3{fill:#000}#mermaid-svg-69bNuolHk2vVDqq2 .active0,#mermaid-svg-69bNuolHk2vVDqq2 .active1,#mermaid-svg-69bNuolHk2vVDqq2 .active2,#mermaid-svg-69bNuolHk2vVDqq2 .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-69bNuolHk2vVDqq2 .activeText0,#mermaid-svg-69bNuolHk2vVDqq2 .activeText1,#mermaid-svg-69bNuolHk2vVDqq2 .activeText2,#mermaid-svg-69bNuolHk2vVDqq2 .activeText3{fill:#000 !important}#mermaid-svg-69bNuolHk2vVDqq2 .done0,#mermaid-svg-69bNuolHk2vVDqq2 .done1,#mermaid-svg-69bNuolHk2vVDqq2 .done2,#mermaid-svg-69bNuolHk2vVDqq2 .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-69bNuolHk2vVDqq2 .doneText0,#mermaid-svg-69bNuolHk2vVDqq2 .doneText1,#mermaid-svg-69bNuolHk2vVDqq2 .doneText2,#mermaid-svg-69bNuolHk2vVDqq2 .doneText3{fill:#000 !important}#mermaid-svg-69bNuolHk2vVDqq2 .crit0,#mermaid-svg-69bNuolHk2vVDqq2 .crit1,#mermaid-svg-69bNuolHk2vVDqq2 .crit2,#mermaid-svg-69bNuolHk2vVDqq2 .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-69bNuolHk2vVDqq2 .activeCrit0,#mermaid-svg-69bNuolHk2vVDqq2 .activeCrit1,#mermaid-svg-69bNuolHk2vVDqq2 .activeCrit2,#mermaid-svg-69bNuolHk2vVDqq2 .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-69bNuolHk2vVDqq2 .doneCrit0,#mermaid-svg-69bNuolHk2vVDqq2 .doneCrit1,#mermaid-svg-69bNuolHk2vVDqq2 .doneCrit2,#mermaid-svg-69bNuolHk2vVDqq2 .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-69bNuolHk2vVDqq2 .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-69bNuolHk2vVDqq2 .milestoneText{font-style:italic}#mermaid-svg-69bNuolHk2vVDqq2 .doneCritText0,#mermaid-svg-69bNuolHk2vVDqq2 .doneCritText1,#mermaid-svg-69bNuolHk2vVDqq2 .doneCritText2,#mermaid-svg-69bNuolHk2vVDqq2 .doneCritText3{fill:#000 !important}#mermaid-svg-69bNuolHk2vVDqq2 .activeCritText0,#mermaid-svg-69bNuolHk2vVDqq2 .activeCritText1,#mermaid-svg-69bNuolHk2vVDqq2 .activeCritText2,#mermaid-svg-69bNuolHk2vVDqq2 .activeCritText3{fill:#000 !important}#mermaid-svg-69bNuolHk2vVDqq2 .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-69bNuolHk2vVDqq2 g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-69bNuolHk2vVDqq2 g.classGroup text .title{font-weight:bolder}#mermaid-svg-69bNuolHk2vVDqq2 g.clickable{cursor:pointer}#mermaid-svg-69bNuolHk2vVDqq2 g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-69bNuolHk2vVDqq2 g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-69bNuolHk2vVDqq2 .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-69bNuolHk2vVDqq2 .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-69bNuolHk2vVDqq2 .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-69bNuolHk2vVDqq2 .dashed-line{stroke-dasharray:3}#mermaid-svg-69bNuolHk2vVDqq2 #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-69bNuolHk2vVDqq2 #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-69bNuolHk2vVDqq2 #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-69bNuolHk2vVDqq2 #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-69bNuolHk2vVDqq2 #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-69bNuolHk2vVDqq2 #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-69bNuolHk2vVDqq2 #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-69bNuolHk2vVDqq2 #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-69bNuolHk2vVDqq2 .commit-id,#mermaid-svg-69bNuolHk2vVDqq2 .commit-msg,#mermaid-svg-69bNuolHk2vVDqq2 .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-69bNuolHk2vVDqq2 .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-69bNuolHk2vVDqq2 .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-69bNuolHk2vVDqq2 g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-69bNuolHk2vVDqq2 g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-69bNuolHk2vVDqq2 g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-69bNuolHk2vVDqq2 g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-69bNuolHk2vVDqq2 g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-69bNuolHk2vVDqq2 g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-69bNuolHk2vVDqq2 .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-69bNuolHk2vVDqq2 .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-69bNuolHk2vVDqq2 .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-69bNuolHk2vVDqq2 .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-69bNuolHk2vVDqq2 .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-69bNuolHk2vVDqq2 .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-69bNuolHk2vVDqq2 .edgeLabel text{fill:#333}#mermaid-svg-69bNuolHk2vVDqq2 .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-69bNuolHk2vVDqq2 .node circle.state-start{fill:black;stroke:black}#mermaid-svg-69bNuolHk2vVDqq2 .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-69bNuolHk2vVDqq2 #statediagram-barbEnd{fill:#9370db}#mermaid-svg-69bNuolHk2vVDqq2 .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-69bNuolHk2vVDqq2 .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-69bNuolHk2vVDqq2 .statediagram-state .divider{stroke:#9370db}#mermaid-svg-69bNuolHk2vVDqq2 .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-69bNuolHk2vVDqq2 .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-69bNuolHk2vVDqq2 .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-69bNuolHk2vVDqq2 .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-69bNuolHk2vVDqq2 .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-69bNuolHk2vVDqq2 .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-69bNuolHk2vVDqq2 .note-edge{stroke-dasharray:5}#mermaid-svg-69bNuolHk2vVDqq2 .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-69bNuolHk2vVDqq2 .error-icon{fill:#522}#mermaid-svg-69bNuolHk2vVDqq2 .error-text{fill:#522;stroke:#522}#mermaid-svg-69bNuolHk2vVDqq2 .edge-thickness-normal{stroke-width:2px}#mermaid-svg-69bNuolHk2vVDqq2 .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-69bNuolHk2vVDqq2 .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-69bNuolHk2vVDqq2 .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-69bNuolHk2vVDqq2 .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-69bNuolHk2vVDqq2 .marker{fill:#333}#mermaid-svg-69bNuolHk2vVDqq2 .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-69bNuolHk2vVDqq2 {color: rgba(0, 0, 0, 0.75);font: ;}
两个Y轴
目 录
Contents
为什么需要
两个Y轴?
绘制示例
总 结
补充资源
§01 两个Y轴
1.1 为什么需要两个Y轴?
在有的时候,需要在一张图上绘制出具有两个Y轴的曲线,这是为:
- 绘制的两个数据曲线具有不同的物理量纲和取值范围,如果使用一个Y轴的比例,这两个曲线在尺度相差过大,使得其中一个分辨不清楚;
- 绘制在一起主要为便于对比两个曲线,相比绘制在两个子图中更加明显。
在博文 How to Create a Matplotlib Plot with Two Y Axes 给出了绘制方法描述,下面进行测试以备之后使用之需。
1.2 绘制示例
使用 twinx() 函数绘制带有两个Y轴的曲线图非常容易。下面 示例演示如何是踹死 Matplotlib
绘制带有两个 Y 轴的图标。
1.2.1 例程:创建带有两个Y轴的Matplotlib
首先,为了演示,假设我们有两个pandas DataFrames:
import pandas as pd#create DataFrames
df1 = pd.DataFrame({'year': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],'sales': [14, 16, 19, 22, 24, 25, 24, 24, 27, 30]})df2 = pd.DataFrame({'year': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],'leads': [4, 4, 4, 5, 4, 5, 7, 8, 5, 3]})
df1: year sales
0 1 14
1 2 16
2 3 19
3 4 22
4 5 24
5 6 25
6 7 24
7 8 24
8 9 27
9 10 30
df2: year leads
0 1 4
1 2 4
2 3 4
3 4 5
4 5 4
5 6 5
6 7 7
7 8 8
8 9 5
9 10 3
这两个数据都有 “year” 变量,从1 变化到 10, 第一个数据是表示每年的销售总额,第二个则显示每一年的销售总额。
下面的代码可以创建一个Matplotlib的图表来显示两个数据,具有两个 Y 轴分别表示两个数据曲线。
import matplotlib.pyplot as plt#define colors to use
col1 = 'steelblue'
col2 = 'red'#define subplots
fig,ax = plt.subplots()#add first line to plot
ax.plot(df1.year, df1.sales, color=col1)#add x-axis label
ax.set_xlabel('Year', fontsize=14)#add y-axis label
ax.set_ylabel('Sales', color=col1, fontsize=16)#define second y-axis that shares x-axis with current plot
ax2 = ax.twinx()#add second line to plot
ax2.plot(df2.year, df2.leads, color=col2)#add second y-axis label
ax2.set_ylabel('Leads', color=col2, fontsize=16)
▲ 图1.2.1 绘制的图表结果
左边的 y-轴显示了每一年总销售量;右边的y-轴显示销售的潜在客户数据。蓝线表示的每年的销售总额,红色则表示每年的销售客户。
1.2.2 改变曲线特性
可以使用 marker 和 linewidth 参数来方便改变图表中曲线的外观。
import matplotlib.pyplot as plt#define colors to use
col1 = 'steelblue'
col2 = 'red'#define subplots
fig,ax = plt.subplots()#add first line to plot
ax.plot(df1.year, df1.sales, color=col1, marker='o', linewidth=3)#add x-axis label
ax.set_xlabel('Year', fontsize=14)#add y-axis label
ax.set_ylabel('Sales', color=col1, fontsize=16)#define second y-axis that shares x-axis with current plot
ax2 = ax.twinx()#add second line to plot
ax2.plot(df2.year, df2.leads, color=col2, marker='o', linewidth=3)#add second y-axis label
ax2.set_ylabel('Leads', color=col2, fontsize=16)
▲ 图1.2.2 使用曲线marker,linewidth进行修改曲线特性的图表
上图中使用 marker=‘o’ 使得单个数据点更加凸显。
※ 总 结 ※
本文给出了利用Matplotlib中的 twinx() 完成同一个图表中绘制具有两个 Y-轴的曲线。绘制每一个曲线的方法与普通的Plot没有什么两样。
▲ 图2.1 增加Grid的形式
col1 = 'steelblue'
col2 = 'red'plt.figure(figsize=(10,6))
plt.grid(True)
fig,ax = plt.subplots()
ax.plot(df1.year, df1.sales, color=col1, marker='o', linewidth=3)
ax.set_xlabel('Year', fontsize=14)
ax.set_ylabel('Sales', color=col1, fontsize=14)
plt.grid(True)ax2 = ax.twinx()
ax2.plot(df2.year, df2.leads, color=col2, marker='o', linewidth=3)
ax2.set_ylabel('Leads', color=col2, fontsize=16)plt.tight_layout()
plt.savefig(r"d:\temp\figure1.jpg")
plt.close()
tspshowimage(image=r"d:\temp\figure1.jpg")
2.1 补充资源
下面的指导博文给出更多其他Matplotlib有用的特性。
- How to Adjust Axis Label Position in Matplotlib
- How to Set Axis Ranges in Matplotlib
- How to Set X-Axis Values in Matplotlib
补充内容
import sys,os,math,time
import matplotlib.pyplot as plt
from numpy import *t = linspace(0, 20, 1000)
sint = sin(t)
cost = cos(t)col1 = 'steelblue'
col2 = 'red'
plt.figure(figsize=(10,6))
plt.plot(t, sint, color=col1, linewidth=1)
plt.xlabel('Time', fontsize=14)
plt.ylabel('Value', color=col1, fontsize=14)
plt.grid(True)
ax2 = plt.twinx()
ax2.plot(t, cost, color=col2, linewidth=1)
ax2.set_ylabel('Value', color=col2, fontsize=16)
plt.tight_layout()
plt.savefig('/home/aistudio/stdout.jpg')
plt.show()
▲ 图2.2.1 绘制示例图
■ 相关文献链接:
- How to Create a Matplotlib Plot with Two Y Axes
- twinx()
- How to Adjust Axis Label Position in Matplotlib
- How to Set Axis Ranges in Matplotlib
- How to Set X-Axis Values in Matplotlib
● 相关图表链接:
- 图1.2.1 绘制的图表结果
- 图1.2.2 使用曲线marker,linewidth进行修改曲线特性的图表
如何使用MatPlotLib绘制出具有两个 Y 轴的曲线图?相关推荐
- Python中用Matplotlib做多个纵轴(多y轴)
转载自:Python中用Matplotlib做多个纵轴(多y轴) Matlab里做多给轴的函数很直接,双轴是plotyy, 三轴是plotyyy, 四轴是plot4y,更多应该是multiplotyy ...
- 【python】matplotlib 实现双(多)Y轴图
[python]matplotlib 实现双(多)Y轴图 先来点简单的 两个Y轴 三个以及多个Y轴 来亿点点美化 先来点简单的 先来个最简单的画图,比如一个 y = s i n ( 2 x ) y=s ...
- python使用matplotlib可视化、自定义移除Y轴指定轴刻度标签(removing specific axis ticks in matplotlib y axis)
python使用matplotlib可视化.自定义移除Y轴指定轴刻度标签(removing specific axis ticks in matplotlib y axis) 目录 python使用m ...
- python使用matplotlib可视化函数曲线、设置y轴为对数坐标(log scale)、默认情况下坐标轴为线性坐标
python使用matplotlib可视化函数曲线.设置y轴为对数坐标(log scale).默认情况下坐标轴为线性坐标 目录
- python一个图画两条曲线_用python建立两个Y轴的XY曲线图方法
想把python提取出来的 加载点反力和某个单元的应力画在同一个XY曲线图上,由于两者数量级差太远,故而需要建立有两个Y轴的XY曲线图. 效果为: 代码如下: #创建Quatype,作为标记,用于判断 ...
- python(matplotlib8)——图中图(在figure中画多个坐标图),次坐标(两个y轴)
文章目录 前言 图中图 次坐标(两个y轴) 前言 来自 莫烦python的总结. 图中图 left,bottom,width,height = 百分比 fig = plt.figure() x = [ ...
- python画xy轴_用python建立两个Y轴的XY曲线图方法
想把python提取出来的 加载点反力和某个单元的应力画在同一个XY曲线图上,由于两者数量级差太远,故而需要建立有两个Y轴的XY曲线图. 效果为: 代码如下: #创建Quatype,作为标记,用于判断 ...
- 用python建立两个Y轴的XY曲线图
想把python提取出来的 加载点反力和某个单元的应力画在同一个XY曲线图上,由于两者数量级差太远,故而需要建立有两个Y轴的XY曲线图. 效果为: 代码如下: #创建Quatype,作为标记,用于判断 ...
- 带圆圈大小的散点图_Python数据可视化,Matplotlib绘制“散点图”的两种方法!...
前言 散点图是Matplotlib常用图形之一,与线形图类似.但是这种图形不再由线段连接,而是由独立的点.圆圈或其他形状构成.那么怎么画散点图呢?Matplotlib给出了两种不同的方法,去画散点图. ...
最新文章
- android fragment 抽屉,android – 更改Fragment中的导航抽屉项目
- 《伊甸之路》:离“现象级”一步之遥
- 深入理解Golang 编程思维和工程实战
- SAP Netweaver后台作业的几种状态
- oracle定时任务会漂移,定时任务与手动执行脚本时的一个重要注意事项
- Google 机器学习应用的43条经验法则
- 软件设计师习题笔记-重点习题一
- 内存对齐 | 原来字段顺序还能影响结构体占用的内存空间
- python怎么读取github_如何通过Python模拟登陆Github?
- linux date -s_Linux炫技:左手密码生成器,解放右手生产力
- word文字铺满页面_这5个Word问题,你会解决几个?
- ACL'21 | 对比学习论文一句话总结
- 计算机基础知识试题 试题及答案
- cad2012打开后闪退_windows7打不开CAD2012出现闪退的处理方法
- 盯市盈亏、浮动盈亏、总盈亏的计算方法
- win10+1060+tensorflow-gpu安装过程
- ArcServer 9.3 ecp、 ArcSDE 9.3 ecp、 ArcIMS 9.3 ecp、 ArcEngine 9.3 ecp
- android开发相册代码,Android开发之简单的电子相册实现
- html表格图片右对齐,更好的方式在HTML表格中右对齐文本
- 计算机的冷启动与热启动
热门文章
- 【独家】一文读懂关联分析
- ***如何优雅的选择字体(font-family)
- Effective Python 小笔记之 zip 函数
- Linux下安装oracle报错
- CentOS 6.x 播放 mp3 音乐 —— 成功
- linux性能调优原创翻译系列
- CCIE试验备考之交换SPAN
- Java String字符串补0或空格
- Maven在windows下的安装
- 几个进程管理的命令:pkill,pidof,kill,killall,job