matplotlib:条形图-散点图-直方图

目录

一.matplotlib常见问题总结

二.条形图

1.条形图

2.横向条形图

3. 多次条形图

三.散点图

四.直方图

1.直方图

2.用条形图画出直方图


一.matplotlib常见问题总结

1.应该选择那种图形来呈现数据

2.matplotlib.plot(x,y)

3.matplotlib.bar(x,y)

4.matplotlib.scatter(x,y)

5.matplotlib.hist(data,bins)

6.xticks和yticks的设置

7.label和titile,grid的设置

8.绘图的大小和保存图片

二.条形图

1.条形图

from matplotlib import pyplot as plt
from matplotlib import font_manager

a=["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:\n最后的骑士","摔跤吧!爸爸","加勒比海盗5:\n死无对证","金刚:\n骷髅岛","极限特工:\n终极回归","生化危机6:\n终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:\n殊死一战","蜘蛛侠:\n英雄归来","悟空传","银河护卫队2","情圣","新木乃伊"]
b=[56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23]
my_font=font_manager.FontProperties(fname="/System/Library/Fonts/PingFang.ttc")

plt.figure(figsize=(20,8),dpi=80)

plt.bar(range(len(a)),b,width=0.5) #绘图时要传入数据,传入x轴和y轴

plt.xticks(range(len(a)),a,rotation=270,fontproperties=my_font)#对x轴上的数据进行变换
plt.savefig("./条形图.jpg")

plt.show()

2.横向条形图

from matplotlib import pyplot as plt
from matplotlib import font_manager

a=["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:最后的骑士","摔跤吧!爸爸","加勒比海盗5:死无对证","金刚:骷髅岛","极限特工:终极回归","生化危机6:终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:殊死一战","蜘蛛侠:英雄归来","悟空传","银河护卫队2","情圣","新木乃伊"]
b=[56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23]
my_font=font_manager.FontProperties(fname="/System/Library/Fonts/PingFang.ttc")

plt.figure(figsize=(20,8),dpi=80)

plt.barh(range(len(a)),b,height=0.5,color="orange")#绘图时要传入数据,注意此时的书写顺序

plt.yticks(range(len(a)),a,fontproperties=my_font)#注意此时是对y轴上的数据进行变换

plt.grid(alpha=0.3)
plt.savefig("./横着的条形图.jpg")
plt.show()

 

3. 多次条形图

from matplotlib import pyplot as plt
from matplotlib import font_manager
a = ["猩球崛起3:终极之战","敦刻尔克","蜘蛛侠:英雄归来","战狼2"]
b_16 = [15746,312,4497,319]
b_15 = [12357,156,2045,168]
b_14 = [2358,399,2358,362]

my_font=font_manager.FontProperties(fname="/System/Library/Fonts/PingFang.ttc")

bar_width=0.2

x_14=list(range(len(a)))
x_15=[i+bar_width for i in x_14]#x右移
x_16=[i+bar_width*2 for i in x_14]

plt.figure(figsize=(20,8),dpi=80)

plt.bar(x_14,b_14,width=bar_width,label="9月14日",color="red")
plt.bar(x_15,b_15,width=bar_width,label="9月15日")#条柱的宽度要与右移的宽度保持一致
plt.bar(x_16,b_16,width=bar_width,label="9月16日")

plt.xticks(x_15,a,fontproperties=my_font)

plt.legend(prop=my_font,loc="upper right")
plt.savefig("./多次条形图.jpg")

plt.show()

三.散点图

from matplotlib import pyplot as plt
from matplotlib import font_manager
y_3=[11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]
y_10=[26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,13,6]
x_3=range(1,32)
x_10=range(51,82)

plt.figure(figsize=(20,8),dpi=80)

plt.scatter(x_3,y_3,label="三月份")
plt.scatter(x_10,y_3,label="十月份")#x右移,将两部分分开

_x=list(x_3)+list(x_10)
_xtick_labels=["3月{}日".format(i) for i in x_3]
_xtick_labels+=["10月{}日".format(i-50) for i in x_10]
my_font=font_manager.FontProperties(fname="/System/Library/Fonts/PingFang.ttc")
plt.xticks(_x[::3],_xtick_labels[::3],rotation=45,fontproperties=my_font)#对x轴上的信息进行调整

plt.xlabel("时间",fontproperties=my_font)
plt.ylabel("温度",fontproperties=my_font)
plt.title("标题",fontproperties=my_font)

plt.legend(loc="upper left",prop=my_font)
plt.savefig("./散点图.jpg")
plt.show()

 

四.直方图

1.直方图

from matplotlib import pyplot as plt
from matplotlib import font_manager
a=[131,  98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114, 119, 128, 121, 142, 127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 115,  99, 136, 126, 134,  95, 138, 117, 111,78, 132, 124, 113, 150, 110, 117,  86,  95, 144, 105, 126, 130,126, 130, 126, 116, 123, 106, 112, 138, 123,  86, 101,  99, 136,123, 117, 119, 105, 137, 123, 128, 125, 104, 109, 134, 125, 127,105, 120, 107, 129, 116, 108, 132, 103, 136, 118, 102, 120, 114,105, 115, 132, 145, 119, 121, 112, 139, 125, 138, 109, 132, 134,156, 106, 117, 127, 144, 139, 139, 119, 140,  83, 110, 102,123,107, 143, 115, 136, 118, 139, 123, 112, 118, 125, 109, 119, 133,112, 114, 122, 109, 106, 123, 116, 131, 127, 115, 118, 112, 135,115, 146, 137, 116, 103, 144,  83, 123, 111, 110, 111, 100, 154,136, 100, 118, 119, 133, 134, 106, 129, 126, 110, 111, 109, 141,120, 117, 106, 149, 122, 122, 110, 118, 127, 121, 114, 125, 126,114, 140, 103, 130, 141, 117, 106, 114, 121, 114, 133, 137,  92,121, 112, 146,  97, 137, 105,  98, 117, 112,  81,  97, 139, 113,134, 106, 144, 110, 137, 137, 111, 104, 117, 100, 111, 101, 110,105, 129, 137, 112, 120, 113, 133, 112,  83,  94, 146, 133, 101,131, 116, 111,  84, 137, 115, 122, 106, 144, 109, 123, 116, 111,111, 133, 150]
d=3
dis=max(a)-min(a)
num_bin=dis//d#可以被整除
print(min(a),max(a),max(a)-min(a))
plt.figure(figsize=(20,8),dpi=80)

plt.hist(a,num_bin,density=1)

plt.xticks(range(min(a),max(a)+d,d))
plt.grid()
plt.savefig("./直方图.jpg")
plt.show()

 

2.用条形图画出直方图

from matplotlib import pyplot as plt
from matplotlib import font_manager
interval = [0,5,10,15,20,25,30,35,40,45,60,90]
width = [5,5,5,5,5,5,5,5,5,15,30,60]
quantity = [836,2737,3723,3926,3596,1438,3273,642,824,613,215,47]
plt.figure(figsize=(20,8),dpi=80)
plt.bar(range(12),quantity,width=1)#画出条形图
_x=[i-0.5 for i in range(13)]
_xtick_labels=interval+[150]
plt.xticks(_x,_xtick_labels)#对条形图的x轴重定义;第一个列表指明位置,第二个列表用于替换对应位置
plt.grid(alpha=0.4,linestyle="--")
plt.savefig("./条形图画出直方图.jpg")
plt.show()

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PURE-li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值