from matplotlib import pyplot as plt
import numpy as np
#生成(-50,50)的数组
x = np.arange(-50,50)
#计算因变量y的值
y = x ** 2
#根据x、y数组绘制图像y=x^2,其中属性设置图像显示参数,其中marker...设置标记点特性
plt.plot(x,y,linewidth=1,label="y=x^2的label参数",linestyle="-",color="r")
#修改字体配置,允许中文
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
#添加标题
plt.title("这是y=x^2的图像,范围[-50,50)",fontsize=16)
#图例,默认使用每个图像的label值作为图例说明
plt.legend(loc="upper right")
#显示网格,linestyle设置虚线实线,linewidth设置网格宽度,axis:x/y/both设置x/y/两者的网格
plt.grid(linestyle="--")
#设置图像分辨率:72对应432*288、100对应600*400、300对应1800*1200,
plt.rcParams["figure.dpi"] = 100
#设置图像尺寸:
plt.rcParams["figure.figsize"] = (3,2)
#设置x、y轴名称
plt.xlabel("x轴")
plt.ylabel("y轴")
#设置x、y坐标区间
plt.xlim(x.min(),x.max())
plt.ylim(y.min(),y.max())
#设置x、y轴显示刻度,ticks设置刻度显示范围,rotation设置旋转角度,label覆盖原x刻度信息
x_titcks = range(-50,50,30)
plt.xticks(ticks=x_titcks,rotation=45,labels=["%i 刻"%i for i in x_titcks],color="red")
#修改坐标轴位置:1.获取当前坐标轴、2.spines确定top/bottom/left/right轴、set_color设置颜色、set_position设置移动百分比
ax = plt.gca()
ax.spines["right"].set_color("none")
ax.spines["top"].set_color("none")
ax.spines["left"].set_position(("axes",0.5))
#向坐标区添加文本
for a in [-50,-25,0,25,50]:
#(x,y,data)表示循环在图像(x,y)位置添加数据data
plt.text(a,a**2,a**2)
#显示图形操作菜单
%matplotlib notebook
#显示构建的图像
plt.show()
#创建图形对象
plt.figure(
num="f1",#图像编号
figsize=(4,2),#指定图像宽高,单位英寸
dpi=100,#分辨率
facecolor="gray",#背景颜色
edgecolor=None,#边框颜色
frameon=True#是否显示边框
#颜色等其他图像设置
)
通过在figure对象上创建Axes子图在figure的选定区域上进行图像绘制。
from matplotlib import pyplot as plt
import numpy as np
#创建图形对象
fig = plt.figure(num="f1",#图像编号)
#在fig对象上创建Axes子图:参数距离边界百分比[left,bottom,widith,height]
#1.ax1从距fig对象左边界0%距fig对象下边界50%开始,宽度高度50%
ax1 = fig.add_axes([0,0.5,0.5,0.5])
#2.ax2从距fig对象左边界50%距fig对象下边界0%开始,宽度高度50%
ax2 = fig.add_axes([0.5,0,0.5,0.5])
ax1.plot([1,2,3,4],[3,5,7,4],color="r")
ax2.plot([1,2,3,4],[4,8,2,8],color="b")
from matplotlib import pyplot as plt
import numpy as np
#subplot为均分画布的函数,参数:(rows,cols,index)表示划分rows行cols列,该子图占用ax为第index(0,rows*cols)个子画布
ax1 = plt.subplot(2,2,1)
ax2 = plt.subplot(2,2,2)
ax3 = plt.subplot(2,2,3)
ax4 = plt.subplot(2,2,4)
ax1.plot([1,2,3,4],[3,5,7,4])
ax2.plot([1,2,3,4],[1,2,3,4])
ax3.plot([1,2,3,4],[8,4,2,4])
ax4.plot([1,2,3,4],[3,1,6,5])
#画布中的子图采用紧凑型布局(解决图标重叠问题)
plt.tight_layout()
from matplotlib import pyplot as plt
import numpy as np
ax1 = plt.subplot(1,2,1)
ax2 = plt.subplot(2,2,2)
ax3 = plt.subplot(2,2,4)
ax1.plot([1,2,3,4],[3,5,7,4])
ax2.plot([1,2,3,4],[1,2,3,4])
ax3.plot([1,2,3,4],[8,4,2,4])
#画布中的子图采用紧凑型布局(解决图标重叠问题)
plt.tight_layout()
from matplotlib import pyplot as plt
import numpy as np
ax1 = plt.subplot(3,1,3)
ax2 = plt.subplot(3,2,1)
ax3 = plt.subplot(3,2,2)
ax4 = plt.subplot(3,2,3)
ax5 = plt.subplot(3,2,4)
ax1.plot([1,2],[3,5])
ax2.plot([1,2],[1,2])
ax3.plot([1,2],[8,4])
ax4.plot([1,2],[7,6])
ax5.plot([1,2],[6,7])
#画布中的子图采用紧凑型布局(解决图标重叠问题)
plt.tight_layout()
from matplotlib import pyplot as plt
import numpy as np
#subplots(rows,cols)函数返回值有两个:画布对象+子图数组
fig,axes = plt.subplots(2,2)
axes[0][0].plot([1,2,3,4],[3,5,7,4])
axes[0][1].plot([1,2,3,4],[1,2,3,4])
axes[1][0].plot([1,2,3,4],[8,4,2,4])
axes[1][1].plot([1,2,3,4],[3,1,6,5])
#画布中的子图采用紧凑型布局(解决图标重叠问题)
plt.tight_layout()
from matplotlib import pyplot as plt
import numpy as np
#x轴坐标[1,2,3,4],高度[2,4,6,8]
plt.bar([1,2,3,4],[2,4,6,8],color=["r","g","b","y"])
from matplotlib import pyplot as plt
import numpy as np
#国家
countries = ["挪威","德国","中国","美国","瑞典"]
#金牌
gold = [16,12,9,8,8]
#银牌
silver = [8,10,4,10,5]
#铜牌
bronze = [13,5,2,7,5]
#1.确定不同国家金银铜牌柱状图起始位置数组
x = np.arange(len(countries))
width = 0.2
#金牌起始位置数组
gold_x = x
#银牌起始位置数组
silver_x = x + width
#铜牌起始位置数组
bronze_x = x + width * 2
#2.绘制金牌图形:gold_x[i]位置分别绘制高度为gold[i]宽度为width的柱状图
plt.bar(gold_x,gold,width=width,color="gold")
#3.绘制银牌图形
plt.bar(silver_x,silver,width=width,color="silver")
#4.绘制铜牌图形
plt.bar(bronze_x,bronze,width=width,color="saddlebrown")
#5.ticks设置刻度显示范围,label覆盖原x刻度信息
plt.xticks(ticks=x+width,labels=countries)
#6.向坐标区添加文本
for i in x:
plt.text(gold_x[i],gold[i],gold[i],va="bottom",ha="center")
plt.text(silver_x[i],silver[i],silver[i],va="bottom",ha="center")
plt.text(bronze_x[i],bronze[i],bronze[i],va="bottom",ha="center")
使用bottom属性
from matplotlib import pyplot as plt
import numpy as np
#国家
countries = ["挪威","德国","中国","美国","瑞典"]
#金牌
gold = [16,12,9,8,8]
#银牌
silver = [8,10,4,10,5]
#铜牌
bronze = [13,5,2,7,5]
#2.绘制金牌图形
plt.bar(countries,gold,bottom=np.array(silver)+np.array(bronze),color="gold")#注意列表相加要转为数组
#3.绘制银牌图形
plt.bar(countries,silver,bottom=bronze,color="silver")
#4.绘制铜牌图形
plt.bar(countries,bronze,bottom=0,color="saddlebrown")
参数同bar( )
from matplotlib import pyplot as plt
import numpy as np
#y轴坐标[1,2,3,4],宽度[2,4,6,8]
plt.barh([1,2,3,4],[2,4,6,8],color=["r","g","b","y"])