Python_matplotlib scatter chart, bar chart, histogram notes

1. Scatter chart
Insert picture description here

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
Insert picture description here

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
Insert picture description here

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.
Insert picture description here

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
Insert picture description here

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

Guess you like

Origin blog.csdn.net/tjjyqing/article/details/113465014