1. Scatter chart
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]
plt.figure(figsize=(20, 8), dpi=80)
my_font = font_manager.FontProperties(fname=r"G:\Python_Learning\untitled\test\simsun.ttc") # 调取中文字体
x_3 = range(1, 32)
x_10 = range(51, 82)
plt.scatter(x_3, y_3, label='3月份')
plt.scatter(x_10, y_10, label='10月份')
plt.legend(prop=my_font, loc="upper left")
_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]
plt.xticks(_x[::3], _xtick_labels[::3], fontproperties=my_font, rotation=45)
plt.xlabel("日期", fontproperties=my_font) # 贴轴标题
plt.ylabel("温度℃", fontproperties=my_font)
plt.title("北京2016年3,10月份白天的最高气温散点图", fontproperties=my_font)
plt.show()
2. Bar graph
(1) General bar graph
from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname=r"G:\Python_Learning\untitled\test\simsun.ttc") # 调取中文字体
plt.figure(figsize=(20, 8), dpi=80) # 调图表大小
a = ["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:\n最后的骑士","摔跤吧!爸爸","加勒比海盗5:\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]
_x = range(len(a))
_y = b
plt.bar(_x, _y, width=0.2, color='orange')
plt.xticks(_x, a, fontproperties=my_font, rotation=90)
plt.show()
(2) Horizontal bar graph
from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname=r"G:\Python_Learning\untitled\test\simsun.ttc") # 调取中文字体
plt.figure(figsize=(20, 8), dpi=80) # 调图表大小
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]
plt.barh(range(len(a)), b, height=0.3, color='orange')
plt.yticks(range(len(a)), a, fontproperties=my_font)
plt.show()
(3) Bar graph application
from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname=r"G:\Python_Learning\untitled\test\simsun.ttc") # 调取中文字体
plt.figure(figsize=(20, 8), dpi=80) # 调图表大小
a = ["猩球崛起3:终极之战","敦刻尔克","蜘蛛侠:英雄归来","战狼2"]
b_16 = [15746,312,4497,319]
b_15 = [12357,156,2045,168]
b_14 = [2358,399,2358,362]
x_14 = list(range(len(a)))
x_15 = [i + 0.2 for i in x_14]
x_16 = [i + 0.2 for i in x_15]
plt.bar(range(len(a)), b_14, width=0.2, color='purple', label="9月14日")
plt.bar(x_15, b_15, width=0.2, color='yellow', label="9月15日")
plt.bar(x_16, b_16, width=0.2, color='blue', label="9月16日")
plt.legend(prop=my_font)
plt.ylabel("票房/万元", fontproperties=my_font)
plt.xticks(x_15, a, fontproperties=my_font)
plt.show()
(4) Bar graph pseudo-histogram
Because the code function of the histogram deals with unprocessed data. But if it is required to display the form of connecting histograms together, this can be done with bar graphs.
from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname=r"G:\Python_Learning\untitled\test\simsun.ttc") # 调取中文字体
plt.figure(figsize=(20, 8), dpi=80) # 调图表大小
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]
_x = [i-0.5 for i in range(len(quantity)+1)] # -0.5是挪移位置,+1是显示最后一个横坐标
plt.bar(range(len(quantity)), quantity, width=1)
plt.xticks(_x, interval+[150], fontproperties=my_font) # 显示最后一个横坐标
plt.grid(True, linestyle="-.", alpha=0.5) # 显示网络,透明度为0.5
plt.show()
3. Histogram
(1) Applicable conditions
Unprocessed data.
(2) Example of histogram
from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname=r"G:\Python_Learning\untitled\test\simsun.ttc") # 调取中文字体
plt.figure(figsize=(20, 8), dpi=80) # 调图表大小
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]
bin_width = 3 # 设置组距为3,数字3以内为一组
num_bins = int((max(a)-min(a))/bin_width) # 组数量,在python绘图种要让它等于整数,不然绘图偏移
print(num_bins)
plt.hist(a, num_bins, density=True) # density 表示其为频率直方分布图
plt.xticks(list(range(min(a), max(a)+3))[::bin_width], rotation=45) # range后面取不到,所以加一个bin_width
plt.grid(True, linestyle="-.", alpha=0.5) # 显示网络,透明度为0.5
plt.show()
Four, more resources
https://plotly.com/python/
https://echarts.apache.org/examples/zh/index.html#chart-type-line