相关库:numpy、panda、matplotlib
plt.plot(x, y, format_string, **kwargs)
x:x轴数据,列表或数组,可选
y:y轴数据,列表或数组
format_string:控制曲线的格式字符串,可选,由颜色字符、风格字符和标记字符组成。
颜色字符 |
说明 |
颜色字符 |
说明 |
‘b’ |
蓝色 |
‘m’ |
洋红色 |
‘g’ |
绿色 |
‘y’ |
黄色 |
‘r’ |
红色 |
‘k’ |
黑色 |
‘c’ |
青绿色 cyan |
‘w’ |
白色 |
‘#008000’ |
RGB某颜色 |
‘0.8’ |
灰度值字符串 |
风格字符 |
说明 |
‘-‘ |
实线 |
‘–’ |
破折线 |
‘-.’ |
点划线 |
‘:’ |
虚线 |
’ ’ ’ ‘ |
无线条 |
标记字符 |
说明 |
标记字符 |
说明 |
‘.’ |
点标记 |
‘1’ |
下花三角标记 |
‘,’ |
像素标记(极小点) |
‘2’ |
上花三角标记 |
‘o’ |
实心圈标记 |
‘3’ |
左花三角标记 |
‘v’ |
倒三角标记 |
‘4’ |
右花三角标记 |
‘^’ |
上三角标记 |
’s’ |
实心方形标记 |
‘>’ |
右三角标记 |
‘p’ |
实心五角标记 |
‘<’ |
左三角标记 |
‘*’ |
星形标记 |
‘h’ |
竖六边形标记 |
‘d’ |
瘦菱形标记 |
‘H’ |
横六边形标记 |
‘|’ |
垂直线标记 |
‘+’ |
十字标记 |
‘D’ |
菱形标记 |
‘x’ |
x标记 |
**kwargs:第二组或更多,(x,y,format_string)
常用的参数:
color:控制颜色,color=’green’
linestyle:线条风格,linestyle=’dashed’
marker:标记风格,marker = ‘o’
markerfacecolor:标记颜色,markerfacecolor = ‘blue’
markersize:标记尺寸,markersize = ‘20’
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus']=False
plt.figure(figsize=(4,2))
x = np.linspace(0, 2*np.pi, 50)
print(x)#均分计算指令
y = np.sin(x)
plt.plot(x,y,'bp--')
plt.show()
import matplotlib.pyplot as plt
plt.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1,
startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=0, 0, frame=False,
rotatelabels=False, *, normalize=None, data=None)
x: 即每个扇形的占比的序列或数组
explode:如果不是None,则是一个len(x)长度的数组,指定每一块的突出程度;突出显示,设置每一块分割出来的间隙大小
labels:为每个扇形提供标签的字符串序列
colors:为每个扇形提供颜色的字符串序列
autopct:如果它是一个格式字符串,标签将是fmt % pct。如果它是一个函数,它将被调用。
shadow:阴影
startangle:从x轴逆时针旋转,饼的旋转角度
pctdistance, default: 0.6每个饼片的中心与由autopct生成的文本的开头之间距离与半径的比率,大于1的话会显示在圆外
labeldistance, default 1.1饼状图标签绘制时的径向距离(我认为这个也与8类似是个比率)。如果设置为None,则不绘制标签,而是存储在图例()中使用。
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
task = ["高数上下复习(15h)","英语每日指标(14h)","最优化(5h)","数据挖掘实验(15h)","考研择校(4h)","数学建模规划(5h)","jupyter学习(5h)"]
time = np.array([15,14,5,15,4,5,5])
totaltime = sum(time)
plt.pie(x=time,labels=task,
autopct='%1.1f%%', #*饼图上标注百分比
shadow=False, #*是否有阴影
startangle=0 #*逆时针旋转角度
)
# plt.axis('equal') # 显示为圆(避免比例压缩为椭圆)
plt.show()
matplotlib.pyplot.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype=’bar’, align=’mid’, orientation=’vertical’, rwidth=None, log=False, color=None, label=None, stacked=False, \*, data=None, \*\*kwargs)
参数:此方法接受以下描述的参数:
x:此参数是数据序列。
bins:此参数是可选参数,它包含整数,序列或字符串。
range:此参数是可选参数,它是箱子的上下限。
density:此参数是可选参数,它包含布尔值。
weights:此参数是可选参数,并且是一个权重数组,与x的形状相同。
bottom:此参数是每个容器底部基线的位置。
histtype:此参数是可选参数,用于绘制直方图的类型。 {‘bar’,‘barstacked’,‘step’,‘stepfilled’}
align:此参数是可选参数,它控制如何绘制直方图。 {‘left’,‘mid’,‘right’}
rwidth:此参数是可选参数,它是条形图的相对宽度,是箱宽度的一部分
log:此参数是可选参数,用于将直方图轴设置为对数刻度
color:此参数是一个可选参数,它是一个颜色规格或一系列颜色规格,每个数据集一个。
label:此参数是可选参数,它是一个字符串或匹配多个数据集的字符串序列。
normed:此参数是可选参数,包含布尔值,而是使用density关键字参数。
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randn(1000)
plt.hist(x,10)
plt.show()
2d直方图:4.6Python数据处理篇之Matplotlib系列(六)---plt.hist()与plt.hist2d()直方图 - 简书 (jianshu.com)
含曲线拟合:(138条消息) [391]matplotlib.pyplot中的hist函数_周小董的博客-CSDN博客_ax.hist
含堆叠式:(138条消息) matplotlib.pyplot.hist参数详解_TravelingHat的博客-CSDN博客_matplotlib.pyplot.hist
df.plot.box(title="title") # 箱型图
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = [1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100,4000,5000]
df = pd.DataFrame(data)
df.plot.box(title="title") # 箱型图
plt.grid(linestyle="--", alpha=0.3) # 显示网格线
plt.show()
绘制多个箱型图及简便用法:Python pandas.DataFrame.plot.box用法及代码示例 - 纯净天空 (vimsky.com)
给出产品的销售额,按照大到小排序,绘制积分变换曲线(由0->1递增,且斜率逐渐变小)
p.plot(color='r', secondary_y=True, style='-o', linewidth=2)
# secondary_y = True:设置第二纵坐标
plt.annotate(format(p[6], '.4%'), # 文字内容
xy=(6, p[6]), # 点标注的位置
xytext=(6*0.9, p[6]*0.9), # 文字标记的位置
arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
import pandas as pd
import matplotlib.pyplot as plt
import xlrd
# xlrd是读excel,xlwt是写excel的库
dish_profit = r'E:\data\catering_dish_profit.xls'
# 读取数据(设置主键为菜品名)、显示的时候自动设置横轴中文标记
data = pd.read_excel(dish_profit, index_col='菜品名')
print(data)
data = data['盈利'].copy() # 复制一份
print(data)
data= data.sort_values(ascending=False)
data.plot(kind='bar') # 绘制柱状图
p = 1.0*data.cumsum()/data.sum() # data.cumsum():求积分 Σ0,Σ1,Σ2,Σ3……
p.plot(color='r', secondary_y=True, style='-o', linewidth=2)
# secondary_y = True:设置第二纵坐标
# 标记特殊点!详细教程:https://blog.csdn.net/TeFuirnever/article/details/88946088
plt.annotate(format(p[6], '.4%'), # 文字内容
xy=(6, p[6]), # 点标注的位置
xytext=(6*0.9, p[6]*0.9), # 文字标记的位置
arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2")) # arrowprops #箭头参数,参数类型为字典dict
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.ylabel('盈利(元)')
plt.show()
(139条消息) plt.annotate()函数解析(最清晰的解释)_我是管小亮的博客-CSDN博客_plt.annotate(s=r's\hat{y}=29.40+1.55*$'+'广告费支出', x
import pandas as pd
import matplotlib.pyplot as plt
df_normal = pd.read_csv(r"E:\data\user.csv")
print(df_normal)
plt.figure(figsize=(8,4))
plt.plot(df_normal["Date"],df_normal["Eletricity"])
plt.xlabel("日期")
x_major_locator = plt.MultipleLocator(7)
ax = plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
plt.ylabel("每日电量")
plt.title("正常用户电量趋势")
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.show()
df_steal = pd.read_csv(r'E:\data\Steal user.csv')
plt.figure(figsize=(10,9))
plt.plot(df_steal["Date"],df_steal["Eletricity"])
plt.xlabel("日期")
plt.ylabel("日期")
# (解决横轴单位间隔太小)自定义刻度间隔:
x_major_locator = plt.MultipleLocator(7)
ax = plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
plt.title("窃电用户电量趋势")
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.show()