master
/ 9.1 matplotlib 线性图.ipynb

9.1 matplotlib 线性图.ipynb @d487d71

d487d71
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 函数绘图"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## matplotlib方法与数组"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "绘制线型图一般需要先导入matplotlib模块的pyplot子库,一般起别名为plt,方便引用  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "最主要的两个方法:\n",
    "plt.plot():用于绘制图形\n",
    "plt.show():用于显示绘制的结果"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.plot(x, y) # 根据坐标 x, y 值绘图\n",
    "# x, y是列表或数组类型\n",
    "\n",
    "plt.show()  # 显示绘制结果"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "# x 可以缺省\n",
    "# y 为必备参数\n",
    "# fmt表示可将颜色、线型与标记写成一个字符串做参数,如'r-o'表示:红色实线圆点标记\n",
    "\n",
    "plot([x], y, [fmt], *, data=None, **kwargs)\n",
    "plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "\n",
    "y = [1, 4, 9, 16, 25]  # N: 5个数\n",
    "# x取0...N-1。 0,1,2,3,4\n",
    "\n",
    "plt.plot(y)  # 根据坐标 x, y 值绘图\n",
    "plt.show()   # 显示绘制结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "x = [1, 2, 3, 4, 5]\n",
    "y = [1, 4, 9, 16, 25]\n",
    "\n",
    "plt.plot(x, y)  # 根据坐标 x, y 值绘图\n",
    "plt.show()  # 显示绘制结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "x = [1, 2, 3, 4, 5]\n",
    "y = [i**3 for i in x]\n",
    "\n",
    "plt.plot(x, y)  # 根据坐标 x, y 值绘图\n",
    "plt.show()  # 显示绘制结果"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font face='楷体' color='red' size=5> 练一练 </font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "x取值1到100,模仿前面的代码,绘制$y=x^{1/2}$的曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#  补充你的代码\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "颜色、线型、标记可以直接用参数值,也可以用fmt值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "x = [1, 2, 3, 4, 5]\n",
    "y = [1, 4, 9, 16, 25]  # N: 5个数\n",
    "plt.plot(x, y, color='green', marker='o', linestyle='dashed',\n",
    "         linewidth=2, markersize=12)   # 绿色,圆点,虚线\n",
    "\n",
    "plt.show()   # 显示绘制结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "x = [1, 2, 3, 4, 5]\n",
    "y = [1, 4, 9, 16, 25]  # N: 5个数\n",
    "plt.plot(x, y, 'go--', linewidth=2, markersize=12)  # fmt-string\n",
    "\n",
    "plt.show()   # 显示绘制结果"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font face='楷体' color='red' size=5> 练一练 </font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "参考以上代码,将线型改为实线,颜色设为蓝色。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "#  补充你的代码\n",
    "\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "利用range可以产生整数序列,利用列表推导式和math库中的函数,可以产生系列函数值的列表,绘制函数曲线。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "x = range(1, 6)\n",
    "y = [i ** 2 for i in x]\n",
    "\n",
    "plt.plot(x, y)  # 根据坐标 x, y 值绘图\n",
    "plt.show()  # 显示绘制结果"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 绘制温度曲线图"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[某月温度.txt](images/ch9/某月温度.txt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "\n",
    "def read_txt(file):\n",
    "    \"\"\"读文件中的数据到二维列表,返回二维列表\"\"\"\n",
    "    with open(file, 'r', encoding='utf-8') as fr:\n",
    "        data_ls = [x.strip().split() for x in fr]\n",
    "    return data_ls\n",
    "\n",
    "\n",
    "def draw_curve(data_ls):\n",
    "    \"\"\"接收二维列表,绘制温度曲线,无返回值\"\"\"\n",
    "    date = [int(x[0]) for x in data_ls]              # 获取日期的列表\n",
    "    high_temperature = [int(x[1]) for x in data_ls]  # 高温数据列表\n",
    "    plt.plot(date, high_temperature)  # 绘制高温曲线\n",
    "    plt.show()                        # 显示绘制结果\n",
    "\n",
    "\n",
    "if __name__ == '__main__':\n",
    "    data_lst = read_txt('images/ch9/某月温度.txt')\n",
    "    draw_curve(data_lst)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "\n",
    "def read_txt(file):\n",
    "    \"\"\"读文件中的数据到二维列表,返回二维列表\"\"\"\n",
    "    with open(file, 'r', encoding='utf-8') as fr:\n",
    "        data_ls = [x.strip().split() for x in fr]\n",
    "    return data_ls\n",
    "\n",
    "\n",
    "def draw_curve(data_ls):\n",
    "    \"\"\"接收二维列表,绘制温度曲线,无返回值\"\"\"\n",
    "    date = [int(x[0]) for x in data_ls]              # 获取日期的列表\n",
    "    high_temperature = [int(x[1]) for x in data_ls]  # 高温数据列表\n",
    "    low_temperature = [int(x[2]) for x in data_ls]   # 低温数据列表\n",
    "    plt.plot(date, high_temperature)  # 绘制高温曲线\n",
    "    plt.plot(date, low_temperature)   # 绘制低温曲线\n",
    "    plt.show()                        # 显示绘制结果\n",
    "\n",
    "\n",
    "if __name__ == '__main__':\n",
    "    data_lst = read_txt('images/ch9/某月温度.txt')\n",
    "    draw_curve(data_lst)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "\n",
    "def read_txt(file):\n",
    "    \"\"\"读文件中的数据到二维列表,返回二维列表\"\"\"\n",
    "    with open(file, 'r', encoding='utf-8') as fr:\n",
    "        data_ls = [x.strip().split() for x in fr]\n",
    "    return data_ls\n",
    "\n",
    "\n",
    "def draw_curve(data_ls):\n",
    "    \"\"\"接收二维列表,绘制温度曲线,无返回值\"\"\"\n",
    "    date = [int(x[0]) for x in data_ls]              # 获取日期的列表\n",
    "    high_temperature = [int(x[1]) for x in data_ls]  # 高温数据列表\n",
    "    low_temperature = [int(x[2]) for x in data_ls]   # 低温数据列表\n",
    "    plt.plot(date, high_temperature)  # 绘制高温曲线\n",
    "    plt.plot(date, low_temperature)   # 绘制低温曲线\n",
    "    plt.plot(date, [0] * len(date))   # 获取与date等数量的0的数组,绘制x轴\n",
    "    plt.show()                        # 显示绘制结果\n",
    "\n",
    "\n",
    "if __name__ == '__main__':\n",
    "    data_lst = read_txt('images/ch9/某月温度.txt')\n",
    "    draw_curve(data_lst)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "range只能产生整数序列,数据点较少时,只能绘制折线图,无法绘制圆滑曲线。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import math\n",
    "\n",
    "x = range(0, 8)\n",
    "sin_lsx = [math.sin(i) for i in x]  # 根据x值计算系列sin(x)值\n",
    "cos_lsx = [math.cos(i) for i in x]  # 根据x值计算系列cos(x)值\n",
    "\n",
    "plt.plot(x, sin_lsx)                # 根据坐标 x, sin_lsx 值绘sin(x)图\n",
    "plt.plot(x, cos_lsx)                # 根据坐标 x, cos_lsx 值绘cos(x)图\n",
    "plt.show()                          # 显示绘制结果"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "若希望绘制更平滑的函数曲线,可以利用numpy提供的函数产生系列浮点数的数组。 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## numpy数组运算"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "numpy提供的函数可以产生系列浮点数的数组,这些数据可以通过运算,直接得到数组中每个值对应的函数值构成的另一个数组。  \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "| 函数 | 描述 |\n",
    "| :---- | :---- |\n",
    "| array([x,y,x],dtype = int) | 将序列对象转换为数组,np.array([1, 2, 3, 4])返回数组 [1 2 3 4] |\n",
    "| arange([x,]y[,i]) | 创建从x到y,步长为i的数组。np.**arange**(6) 返回数组[0 1 2 3 4 5] |\n",
    "| linspace(x,y[,n]) | 参数为起始值、终止值和元素总数(默认50),创建一维等差数组。\n",
    "np.**linspace**(1, 5, 5) 返回数组 [1. 2. 3. 4. 5.] |\n",
    "| logspace(x,y[,n]) | 参数为起始值、终止值和元素总数,创建一维等比数组。 |\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "x = np.array(range(1, 6))  # 将序列转换为数组,元素默认整数\n",
    "y = x ** 2     # 数组运算,每个元素平方,[1 4 9 16 25]\n",
    "print(x)  # [1 2 3 4 5]\n",
    "print(y)  # [ 1  4  9 16 25]\n",
    "plt.plot(x, y)  # 根据坐标 x, y 值绘图\n",
    "plt.show()  # 显示绘制结果"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "np.arange([x,] y [,i], dtype=int)\n",
    "创建从x到y,步长为i的数组,步长可为小数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "numpy.arange([start, ]stop, [step, ]dtype=None, *, like=None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "x = np.arange(1, 6, 0.1)  # 创建从1到6,步长为0.1的整数数组\n",
    "y = x ** 2     # 数组运算,每个元素平方\n",
    "\n",
    "plt.plot(x, y)  # 根据坐标 x, y 值绘图\n",
    "plt.show()  # 显示绘制结果"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "np.linspace([x,] y [,i])\n",
    "创建从x到y,i个数的等差的数组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "numpy.linspace(start, stop, num=50, \n",
    "               endpoint=True, retstep=False, dtype=None, axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "x = np.linspace(1, 10, 10)\n",
    "print(x)  # [ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font face='楷体' color='red' size=5> 练一练 </font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "利用linspace()产生0到$2\\pi$之间256个点的数据。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 补充你的代码\n",
    "import numpy as np\n",
    "\n",
    "x = np.linspace(1, 2*np.pi, 256)\n",
    "print(x)  \n",
    "\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "x = np.linspace(0, 5) # [0,5),产生50个点的等差数组,x = np.linspace(0, 5, 50)\n",
    "y1 = x\n",
    "y2 = x ** 2           # 生成一系列x平方值的数组\n",
    "y3 = x ** 3           # 生成一系列x立方值的数组\n",
    "plt.plot(x, y1)       # 绘制二次函数曲线\n",
    "plt.plot(x, y2)       # 绘制二次函数曲线\n",
    "plt.plot(x, y3)       # 绘制三次函数曲线\n",
    "plt.show()            # 显示创建的绘图对象"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## lanczos曲线\n"
   ]
  },
  {
   "attachments": {
    "b3cc9e8c-f0e4-496f-91ec-18f57dead0c2.png": {
     "image/png": "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UfFsVJOBgYEtW7Z885vfrFarqVQqmUw6jpNOp+PxeDKZ1O/oRX+0ekFra+s73/nOE+sHcM5d173ooovWr19PREEQGDVd6zrz589vbGzUMYlBEIyOjiJiMplMp9NWG7CcJqxgmHXMsJG+RMxKxbSEh4hlEmpJ2NE6JxbLrGWGedwY/7VCoEPwdKUNqrVDDMOwVColk0l9L2htABE9z4vFYkqpZ599VgcKjI6OTkxMjI2NJZNJXdhgdHS0r69v+/btR48enTt3rt6v/rqx21UqlYmJiUOHDlUqlXg8rjWAdDqdSCTq6urS6XQqlXJd19xi2lyhCyhBzTxgNqitdx0dHa7rViqVcrmczWZNlKLneQ0NDclkUisHR48ePXr0aLVabWlpSSaTViGwnCasQjC7OKnf9KVg7JA64kn3UtOZzdVq1RR40YNtGIFlloO1wttatdVSNrqMhtrVrv0IjLH+/v5t27ZdfPHF0YpGiKi1gampqTvvvDOdTn/2s59dt27djh07giBYtmxZV1eXlPIrX/nKzp07V65cqYuAacFsogLNkn3u3Lk33nijFucmXmdGhxHjODB+DT1zU87I5BHo7ImHHnpobGzsgQceeO9739vS0oKIO3fufOqpp6688kpdUAEAtm7d+sADD/zkJz/5wz/8w4997GNdXV32/rWcDqxCMFs4MbrQvH6JakGhUNi1a9e///u/792798iRI3v37g2C4IEHHtizZ08ul1u1atV73/vejo4OOGVwosUye9BylIh27dp1+PDhO++8c+fOnZVK5ac//Wl9fX17e7vv+88999wzzzxTqVSefPLJ3t7exYsXv+Md73jnO98JkR5FYRgyxlatWtXf3//Zz362s7OzoaHh9ttv/9nPfvboo48i4vj4+NKlSz/xiU+0tbVpW5opTgy1AkRahMfj8WjELtQCAE8a/K/1BlNNIZploCsWX3755bfddtuePXvuvvvuDRs2pFKpvr6+VCr11re+9dZbb21razOKvm5r0tfX9+ijj37kIx+ZbW2dLW8MrOlptvBbAwl/a4ChLns8NDQ0MDAwMTHR0tKiDZIDAwO64ooJdzod87dYXkVm6MSe5xWLxb6+vmw229nZGY/Hi8Xi0NDQ5OTk1NSU7/sdHR2JRKJYLA4MDOjmyFEx7LpuLBbr6uqaM2eOdivkcrlzzz1XS+vu7u6m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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "lanczos曲线常常用在图像插值中,这个算法在放大和缩小中都能较好的抵制锯齿,在插值时,不仅有正的插值系数,也有负的系数,比较适用于自然图像。\n",
    "![image.png](attachment:b3cc9e8c-f0e4-496f-91ec-18f57dead0c2.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "\n",
    "x = np.arange(-10, 10, 0.1)\n",
    "y = np.sinc(x) * np.sinc(x/5)\n",
    "\n",
    "plt.plot(x, y)       # 绘制三次函数曲线\n",
    "plt.show()            # 显示创建的绘图对象"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font face='楷体' color='red' size=5> 练一练 </font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "参考上述代码,绘制-10到10之间,$y=x^3$的曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 补充你的代码\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "def f(x):\n",
    "    return 5*x**2-3*x-9\n",
    "\n",
    "\n",
    "x = np.linspace(-10, 10)\n",
    "y = [f(i) for i in x]\n",
    "\n",
    "plt.plot(x, y)       # 绘制三次函数曲线\n",
    "plt.show()            # 显示创建的绘图对象"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 函数绘图"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "NumPy还提供了sin()、cos()、tan()等三角函数及反三角函数,exp()、log()等指数与对数函数,add()、power()、sqrt()和mod()等数学运算函数,这些函数可接受列表或数组为参数,返回包括系列函数值的数组。\n",
    "下面利用np.linspace()产生包含50个x值的数组,利用np.sin()和np.cos()分别计算得到50个y值,绘制平滑的正余弦曲线图。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt  # 导入pyplot子库命名为plt\n",
    "import numpy as np               # 导入numpy库命名为np\n",
    "\n",
    "x_arr = np.linspace(0, 2*np.pi)  # 0到2pi之间产生50个等间距的点的数组\n",
    "sin_arr = np.sin(x_arr)          # 根据x值计算50个sin(x)值,数组类型\n",
    "cos_arr = np.cos(x_arr)          # 根据x值计算50个cos(x)值,数组类型\n",
    "\n",
    "plt.plot(x_arr, sin_arr)         # 根据坐标 x, sin_lsx 值绘sin(x)曲线图\n",
    "plt.plot(x_arr, cos_arr)         # 根据坐标 x, cos_lsx 值绘cos(x)曲线图\n",
    "plt.show()                       # 显示绘制结果\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "\n",
    "def plot_sin_cos(x): \n",
    "    sin_x = np.sin(x)   # 生成正弦值的数组\n",
    "    cos_x = np.cos(x)   # 生成余弦值的数组\n",
    "\n",
    "    plt.plot(x, sin_x)  # 绘制正弦函数曲线\n",
    "    plt.plot(x, cos_x)  # 绘制余弦函数曲线\n",
    "\n",
    "\n",
    "if __name__ == '__main__':\n",
    "    x_data = np.linspace(0, 2 * np.pi)  # [0,2pi),产生50个点为的等差数组\n",
    "    plot_sin_cos(x_data)\n",
    "    plt.show()          # 显示创建的绘图对象\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "\n",
    "t = np.linspace(-np.pi, np.pi, 201)\n",
    "x = np.sin(9 * t + np.pi/2)\n",
    "y = np.sin(8 * t)\n",
    "\n",
    "plt.plot(x, y)       # 绘制函数曲线\n",
    "plt.show()            # 显示创建的绘图对象"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font face='楷体' color='red' size=5> 练一练 </font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "绘制正切函数曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 补充你的代码\n",
    "\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<font face='楷体' color='red' size=5> 练一练 </font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "绘制-pi/2到pi/2之间正弦函数曲线和-1到1之间反正弦函数曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 补充你的代码\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 标注与美化"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Matplotlib中支持对曲线进行各种标注与美化,规定线条颜色、线型、线标识、图名等操作。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "plot([x], y, [fmt])                  # 绘制单条曲线\n",
    "plot([x], y, [fmt], [x2], y2, [fmt2], ...)   # 同时绘制多条曲线"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "x,y:参数x,y可为数组类型数据或标量  \n",
    "fmt:表示线条颜色、标记和线型的格式的字符串类型可选参数  \n",
    "fmt = '[color][marker][line]'  \n",
    "例如'go--'表示颜色为“green”、标记为“o”(圆点)、线型为破折线  \n",
    "等价于“color= 'green', marker='*', linestyle= '--'”"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.plot(x, y, 'go--')    # 'go--'等价于color='green', marker='o', linestyle='dashed'\n",
    "plt.plot(x, y, color='green', marker='o', linestyle='dashed')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "plot()还可以通过以下参数设置线条属性:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "线条属性:\n",
    "\n",
    "| 属性 | 描述 |\n",
    "| :---- | :---- |\n",
    "| `color`或 c | 颜色 |\n",
    "| `label` | 曲线标识 |\n",
    "| `linestyle` 或 ls | 线型 |\n",
    "| `linewidth` 或 lw | 线宽度 |\n",
    "| `marker` | 数据点标记 |"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "线条风格(linestyle或ls)\n",
    "\n",
    "| 线条风格 | 符号|描述| \n",
    "| :---- | :----  | :----  | \n",
    "|'solid'  | -  |实线     |\n",
    "|'dashed' | -- |破折线    |\n",
    "|'dotted' | :  |虚线     |\n",
    "|'dashdot'| -. |点划线    |"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\"images/ch9/1.png\" width = '800'>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.plot(x, y, '--')   \n",
    "plt.plot(x, y, linestyle='--')\n",
    "plt.plot(x, y, linestyle='dashed')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "线条颜色(color 或 c)\n",
    "\n",
    "| color | 别名 | 颜色 | color | 别名 | 颜色 |\n",
    "| :---- | :---- | :---- | :---- | :---- | :---- |\n",
    "| blue | b | 蓝色 | green | g | 绿色 |\n",
    "| red | r | 红色 | yellow | y | 黄色 |\n",
    "| cyan | c | 青色 | black | k | 黑色 |\n",
    "| magenta | m | 洋红色 | white | w | 白色 |"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.plot(x, y, 'g')           # 'g'等价于color='green'l\n",
    "plt.plot(x, y, color='green')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "常用线条标记(marker)\n",
    "\n",
    "| 标记 | 描述 | 标记 | 描述 |\n",
    "| :---- | :---- | :---- | :---- |\n",
    "| “,” | 像素 | “>” | 右三角形 |\n",
    "| “. ” | 点 | “<” | 左三角形 |\n",
    "| “o” | 圆 | “v” | 倒三角形 |\n",
    "| “D” | 菱形 | “^” | 正三角形 |\n",
    "| “d” | 小菱形 | “1” | 正三分支 |\n",
    "| “s” | 正方形 | “2” | 倒三分支 |\n",
    "| “p” | 五边形 | “3” | 左三分支 |\n",
    "| “h” | 六边形 | “4” | 右三分支 |\n",
    "| “H” | 六边形 | “*” | 星号 |\n",
    "| “8” | 八边形 | “+” | 加号 |\n",
    "| “&#124;” | 竖直线 | “P” | 填充的加号 |\n",
    "| “_” | 水平线 | “x” | 乘号 |\n",
    "| “None”, “  ” , “”  | 无标记 | '$...$' | 字符串转为数学文本描述 |\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f9c5f1746d0>]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(x, y, 'o-')           # marker单用时无线,需指定线型\n",
    "plt.plot(x, y, marker='o')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "线条标记效果:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\"images/ch9/2.png\" width = '800'>\n",
    "<img src=\"images/ch9/3.png\" width = '800'>\n",
    "<img src=\"images/ch9/4.png\" width = '800'>\n",
    "<img src=\"images/ch9/5.png\" width = '800'>\n",
    "<img src=\"images/ch9/6.png\" width = '800'>\n",
    "<img src=\"images/ch9/7.png\" width = '800'>\n",
    "<img src=\"images/ch9/8.png\" width = '800'>\n",
    "<img src=\"images/ch9/9.png\" width = '800'>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 设置线型、宽度、颜色与标记"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "linewidth 或 lw:浮点数,线条宽度\n",
    "label:设置用于显示的线的标签"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAD6CAYAAABOIFvoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJztnXl4FFXWh98bCEsAEdlEMAFXVBSFiAuMKAoiiDqDzKC4gYqOy6gobojK5oojuKEoKoPxm9FhkHFhUNBRUZQJCAgIKnsAEQiLmACS3O+P050OSXd6SXVXV/d5n6ee3L5d1X260l2n7r3n/I6x1qIoiqIoABluG6AoiqIkD+oUFEVRlDLUKSiKoihlqFNQFEVRylCnoCiKopShTkFRFEUpQ52CoiiKUoY6BUVRFKUMdQqKoihKGTXdNiBamjRpYlu3bu22GYqiKJ5i/vz5W621TcPt5zmn0Lp1a/Lz8902Q1EUxVMYY9ZGsp9OHymKoihlqFNQFEVRylCnoCiKopShTkFRFEUpQ52CoiiKUoajTsEYk2mMebeK5+sYY94zxiwyxkwxQqU+J20CyMuD1q0hI0P+5uU5/Q6KoijxI5HXMMecgjGmLjAf6F7FblcABdba9kAj377B+hwjLw8GD4a1a8Fa+Tt4cOCkqsNQFCVZCHY9CncNcxrjdDlOY8yP1tqjQjz3JjDVWjvVGDMEaArkVOyz1t4X6vVzc3NtNHkKrVvLSaxI48Zw000wdiwUFwf6s7Jg4kQYMCDit0g9nnsOPvkEGjWS7eCDA+2cHDjtNKhRw20rFSWl8F/8i4oCfbVqQc2aB/b5ycmBNWsif31jzHxrbW64/RKdvNYY2Olr7wKODdF3AMaYwcBggOzs7KjecN264P3btsGoUZX7i4pg2DBpDxsmx2dnw5gxKeYoCgthyhSYOxfmz4cXX4Rzz5Xndu2Cf/0r+HH16sGWLVC3rjy2Fpyf8VOUlCUvr/K15fLL4a67Kl/89+2TLRihrm3VJdFOYSvQ0Ndu6HtcP0jfAVhrJwITQUYK0bxhdnbwkUJWVnDvC7L/9dcHRhD+4RqkgGNYtQrGjYNJkw48AfPnB5zCFVfA0UfD9u2y7dgRaB9+eMAh7NkDbdvCOedAv37Qs6eMexVFCUrF0cDatTBwINx7L/z0U3SvFeX9ceRYax3dgB+reG4Q8JKv/T5wXrC+ql6/Y8eONhreeMParCxr5ZZWtqws6c/JObA/3JaTE9VbJx/XXmttRkbgA/Xsae2kSdYuXGjtvn3Rv97MmQeeoNNOs/arr5y3W1FShKquOeV/muW3xo1DX8OiAci3EVzD43ZbZ4xpY4wZW6E7D2hpjFkMFAKzQ/Q5xoABskaQkyOzHDk5gTWDMWNkxFCe2rVDv1a8hmsJo2FDWQu4+mpYvBhmzIBBg6B9e8jMjP71evSApUth5Eg49FD4+ms4/XS45hrYtMlx8xXF64S6hhgDr75a+XqUlQXjx4e+hsWFSDxHMm3RjhTC4R8xGCN/qxpBNG4cfP+kZP9+ax97zNp33w30bd5sbUFBfN5v1y5r77nH2lq15GR16GBtaWl83ktRPEDFa8UDD1hbs2bVsxDxvL4Q4UjB9Yt8tJvTTiEYwaacQg3xYhnGxZ21a63t2lUMbNbM2l9+Sdx7//CDtRdfbO2//52491SUJKOqa4gx7lxDInUKuioYhIpTTtnZsjiUkQGlpQfuWz5aKSl480046ST49FNo3hxefx3q10/c+x91FLzzDvTpE+h7+GF4+eXE2aAoLjNsWPBAloYN4bXXEjgVFAOO5ynEm2jzFJwkI0N8e0WMqewsEs6OHZJ48X//J48vvlguxE3D1tSIL998Ax06SPsvf4GnnpLAa0VJYZLxWhFpnoKOFKIgVAhYq1aJtaMS1sqd+f/9n6xMvfwyTJvmvkMAOOUUWUHLzIRnnoFevSS0VVFSlNJSaNAg+HNxCyN1EHUKURAsWgkk63DLlsTbU4Yx8NhjkJsLCxfCddclV0LZwIGSId2sGXz0kWREr1jhtlWK4jj79sFVV0n+Z0WysuQakuyoU4iCimsNLVqIXMbKldCuHbRsmWANpV9/DbQ7d4Z58yTpLBnx29e+PfzwgziGTz5x2ypFqTbl9YoOOkge16sHQ4cm99pBKNQpRMmAAaI3UloKGzfCt9/KP/znn+WxTYBgFSBz9UcddaAcRTKNDoKRkwNz5sAf/iCjhiOPdNsiRakWFcXq9u6V/vvugyeeCFwr1qzxhkMAXWh2hOxsWL++cn+0glUR8+WXMje/cydcdJFE+yS7QyhPaamMrw8+2G1LFKVahBLcjNtvvxroQnMCKSgI3h+XDOhZs6B7d3EIffvC2297yyGAjLP9DsFaePxxWLTIXZsUJQZC/ca9rH6gTsEBQkUUHHaYw280f76EmhYViZTE3/8uq9xeZsoUUQPr0QO+/95taxQlYoqLQ//8vBBlFAp1Cg4QKirJGEkfcIT16yXstKhIwhsmTUqNeP8//UlGPj//DOedF3wsrihJRkmJrBHs3Vt5oO6VKKNQqFNwgIpRSa1aySihoEBu7PfsceBN1q4Vh3D22ZKHkCoS1bVrS05F587i+M47L3oNYUVJINbCLbfI1/bgg+HRR70ZZRQKXWiOE+vWwZlnwoYNUn5gzx4HivV8952okTZq5KitScHOndCtGyxYACeeKIvpiZTnUJQw+Ivj+AezNWpIVPXvfueuXZGiC80uk50Nt94q7eLiGENVrYVlywKPjzsuNR0CiCjMzJlw7LES53vnnW5bpChllA899VOzprcXlEOhTiGOTJhQuS8qAb3x40Xc7pVXHLUraWnSBKZPlzWGBx5w2xpFKSOYwN3evUkmhukQKbBSmbxUK1xt+nQYMkRGC+k0jXLssfDhh25boSgHkIqhp6HQkUIcCRWW1rJlmAO/+04qeVsLo0ZB//6O2+YJSktFVTVUIoiiJID9+1Mz9DQUjjgFY0wdY8x7xphFxpgpxlTOpjLGnG2MmePb1htjrjbG9DTGFJTrP9YJe5KFUKGqjRtXIZ+7Z484gaIiuOyy1ByfRsojj8Bdd8Gllwb0AxQlwTz8cPCvn9dDT0Ph1EjhCqDAWtseaAR0r7iDtfa/1tou1touwGLgG99TE/z91tqUks6sGKrasqUIZS1aJLooQRk6VOonH3UUvPSS97KVneTGG+VW7Ouv4bbb3LZGSUNmzJALf0aG3J+lUuhpSCIpzxZuA94E+vraQ4BHq9g3C1jha/cEFgDzgKn4QmSr2hJRjjOevP9+oKznp59WeHLzZmsbNbI2M9Pa/HxX7Es68vOtrV1bTtqrr7ptjZJGrFsnddnB2tGj3bam+pDgcpyNgZ2+9i7gkCr27Q7M9rVXAsOttZ2AFkDXYAcYYwYbY/KNMflbXC1cUH169RJVh9JS0bI7/PByctsfNZN6CG+8AR07um1qctCxYyCM689/lnBVRYkjeXkyEsjOhm3bJG3mvvvctipxOOUUtgINfe2Gvseh6AO852sXArN87TVAs2AHWGsnWmtzrbW5TZOhmlg1GTVKgmx27pQ11ANyGD7Phj/+0W0Tk4uBA6Vw0N69cOWVUslEUeKAPx+hfFTRjz8GqtymA045hdlAD1+7GxC0eopvAfoc4GNf1xCgvzEmA2gHLHHInqSmZk3YvTvw+F4e5U7GUlxUmtbrylXy9NPQpo2s7hUWum2NkqIEy0coLk6veA+nnEIe0NIYsxi5+19pjBkbZL9TgaXWWr8a0HPAQOBrYJq1dlmQY1KSjRvlb2fmMJoHGMtQOjI/JeOeHaF+fdEU+PxzkfpQlDiQTvkIoXAkec1auxe4sEL3XUH2mwdcVO7xJuBsJ2zwGtnZsHPtdt7kcmpQymPcQz6nkpOCcc+OkZMTaFsrAeSZme7Zo6QcWVkHVrn1k4r5CKHQ5DWXGDMGxte4k2zW8xWnMZxRZGamZtyz42zcCL17S/iuojjE++8Hdwipmo8QCnUKLjGg+SyuKnmNvdTmGiazn0xKSqSuvRKGTZvgo49EG+qToMtXihIVO3bADTdI+7LL0iQfIQTqFNzg118lxAGoPeZBlttjueEGCVO95hqZFVGqoGPHgGDewIFS71lRqsGdd4rM/emnSzHANWvk97hmTXo5BFCn4A7bt8ti6UknlU2BPPGE5CzMnw9jgy3RKwdy//3iHNauFeFARYmRmTPh1Vel3tOrr0qdhHRGnYIbtGolUTT/+U/ZQulBBwUUsh94QCq3lSW1RVp/IZ3IzIS//U1+yZMmiR6BokRIXp78tjIyZHkKYMQIKVmS7qhTSCQlJRI1A3I70qLFAU/36AFdu8pumzbFWJgnnTj+eBg9Wto331w5wFxRglC+YI618nvLyJAbMUWdQmJ5/HHo00dqEYdg1arKfVEV5kk3br9dppH+9Kf0Fg9UIiZYglppKQwf7o49yYYW2UkUK1bAyJEi1fD997KAEIRQpQPSKXkmKmrWhK++kr+KEgGaoFY1OlJIBKWlAe2eQYPg3HND7hoqSSadkmeiprxD2L07MEWnKEHQ31jVqFNIBK+8AnPmQPPmYUOLghXmqV07vZJnYmb6dFEaTCf1MiVqbr+9cl+6JahVhTqFeFNYGNDdfeYZaNSoyt3LF+bx07ChFB9TwrB1q2Q7DxkiErSKEoRPP5W/WVnpm6BWFeoU4s2DD4pjOOcc6NcvokMGDJCkmb17oW1b+PlnKVWshGHgQDjzTNi8OZDcpijl+M9/4J13RF/x++/TN0GtKtQpxBNroUEDqFtXJBmijI6pVQuee07ao0frQlhYMjKkIE+NGvDCC5IJqCg+9u6FW2+V9oMPSnlcpTLqFOKJMfDooxKCeuKJMb3EuefKAKO4WBN3I+Kkk6Sec2mpVGorKXHbIiVJeOopKZjTtq2W/K4KdQqJoHHjah3+1FMy/zl1qujAKWF4+GG5Dfzf/+Dll922RkkC1q0L5Dk+95yMwpXgqFOIB0VF0KUL/OMfjoRHHn54ILGmVy+VvwhLgwYwbhwcddSBK/ZK2uGXs8jJkdF2p05VRoQrqFOID48/Dl98AY89JtMYDtCihcxG7d+v8hcR0bcvLF0KF1zgtiWKS5SXs/Dz7bf6mwmHsQ7cyRpj6gD/BA4HFgNX2QovbIzpCbwCrPF1XQusDXdcRXJzc21+fn61bY4ba9aIqtaePSJ616WLIy/buvWBX24/OTnylkoYSktliKWkDfqbORBjzHxrbW64/Zz6lVwBFFhr2wONgO4h9ptgre3i21ZEcZx3uOsucQiXX+6YQwBNzY+ZbdtELO+KK9y2REkw+puJDaecQjfAvwT6MXBOiP36GmPmGWOmGmNMFMd5g48/ltXgrCyZQnIQTc2PkeJieO01yXL+4gu3rVESSKtWwfv1N1M1TjmFxoA/hXQXcEiQfVYCw621nYAWQNcIj8MYM9gYk2+Myd+yZYtDJjtMSQnccYe0hw0L/Y2MkWDyFxkZmpofllatArWc77jDsTUeJfk55ZTKfSpnER6nnMJWoKGv3dD3uCKFwCxfew3QLMLjsNZOtNbmWmtzmzZt6pDJDrNunZSFzM6OS0JBefkLY2QrLYVmzRx/q9Rj6FBZqf/f/1QXKU0oKIAPP5T2oYeqnEU0OOUUZgM9fO1uQLBq6kOA/saYDKAdsCTC47xBmzawfLlUAKtTJy5v4Ze/KC2FRx6RvqFDNT8rLPXrB24P771Xi/GkAQ88IEt7/fpJwSqVs4gcp5xCHtDSGLMYGRGsNMZUlAN9DhgIfA1Ms9YuC3LcbIfscYfataUaWAK47TbJX1i0CN54IyFv6W2uugpOPlluIZ9+2m1rlDiycKFUas3MFEEBJToccQrW2r3W2guttSdZa6+01q621t5VYZ9N1tqzrbWnWmsfCnGc94Tw/SqohYUJfdu6dQM3v8EqSSkVqFEjoCoYrLydkhJYKwGA1krQ2ZFHum2R99DA7eryyCOSpHbttQl/6wEDZDFtwwa9+Y2Ibt0koW3SJLctUeLEf/4Ds2fDwQerUG6sqFOoDmvWwLPPStuFAq8ZGYGaPcOHq/xFRCRoek9JLHl5spDcq5c8vuCCakuOpS3qFKrD8OGwb58kqnXo4IoJmzbJzIi1Kn8RFZ9/LsJ5iufxy1mUT0qbPl1/A7HiiMxFIkkamYuFC8URZGZK1FGbNq6Yoan8MbBtm6zSFxfDvHlw6qluW6RUA/0NREaiZS7Sj3vuCaxmueQQQFP5Y6Jx40C1lfvvd9cWpdrob8BZ1CnEwoIFkhnTsKGE/riIyl/EyD33yP9v1ixZmVQ8S6gKavobiA11CrHQoQP897/w/POur2ap/EWMHHII3H23tO+/35G6F4o7dOxYuU/lLGJHnUKsdO2aFOmRoeQvtLZMBNx2GzRvLusK77zjtjVKDPz8swz2QP6VKmdRfdQpRENJiaQQJxnl5S/8kbF68xsB9eoFTtgTT7hrixITjz4Kv/4KF14IP/2kchZOoE4hGt58U6QS/GqoSciQITIz8vnnAUEwpQquvx5GjIB333XbEiVK1q+HF16Q9qhR7tqSSqhTiJTffgvEtZ98squmVEXDhqL5BrIGrqOFMNSqBQ8+CE2auG2JEiWjRkma0J/+lNQ/Sc+hTiFSXntNNHOOPTbpx6Y33yxywfPnw7RpblvjIfbtg8WL3bZCiYAffoBXX5XEzZEj3bYmtVCnEAl79gTGpyNGQM2a7toThqyswFT5Aw+otHZEbNwIbdvCuefC7t1uW6OE4aGH5Ht99dVwzDFuW5NaqFOIhIkTRXL5pJNEoN0DXHedZHp+951EZaguUhhatJATtXUrPPec29YoIcjLg8MOC9RKOukkd+1JRdQphOPXXwMBz6NGydXVA9SqBeefL+1t21QXKSzGBOYhnnxSqugpSYVf42jTpkDf/ffr99lpvHGFc5O9e+EPf4DOnaFPH7etiYoZMyr3FRW5noSdvJx3HnTpIrUxnnnGbWuUCgSrG6LfZ+dxRBDPGFMH+CdwOLAYuKpiwRxjjAFeB44Ffgb+AJwHvILUbAa41lq7oqr3ck0Qr6REVrU8REZG8Ogjf4KbEoSPP5Z1hYMPloD3hg3DHqIkBv0+V49EC+JdARRYa9sDjYDuQfbpDNS01p4OHESgNvMEa20X31alQ3AVjzkEUF2kmDjnHMlW37EDxo1z2xqlHM2aBe/X77OzOOUUugEf+dofA+cE2WczMN7X3leuv68xZp4xZqpvNJEcFBbCmWfC1KmeDfYPpoukmjBhMEYizNq0kfBjJWlo2rRyn36fnccpp9AY2Olr7wIOqbiDtfYHa+08Y8zvgVrATGAlMNxa2wloAXQN9uLGmMHGmHxjTP6WLVscMjkMf/0rzJ0LL70kFwoP4tdFKn8ndemlSZ9m4T5du8L330P//m5bovj44gtYsgRq14ZWrVTjKJ445RS2Av7J14a+x5UwxlwE3Ab0sdaWAIWAT86KNUDQAaK1dqK1Ntdam9s02O2C02zbFlho9Hh1rgEDJOroX/+Sx7NmSdqFEoYkz0VJN/w/w6FDRd5CNY7ih1NOYTaBNYJuwCcVdzDGHAoMBXpba3/xdQ8B+htjMoB2wBKH7KkeTz8Nv/wCPXrIFFIKcMklIgWwcaPcXSkRsGWLXIVGj3bbkrRmzhy5mTnooKSWHUsZnHIKeUBLY8xi5O5/pTFmbIV9rkamiGYaY+YYYwYBzwEDga+BadbaZQ7ZEzvlwxEfeshdWxzEmMDd1qOPSiVKJQyrVsHYsfDYY5LUpriC/2d4220i9qjEGWutp7aOHTvauPLAA9aCtT16xPd9XKC01NpTTpGP9/TTblvjEXr1khN2991uW5KWfPqpnP6GDa0tLHTbGm8D5NsIrrGavFaekhL4xz+knUKjBD/lRwuPP66jhYgYMUL+PvccbN7sri1piP/7evvt0KiRq6akDeoUylOjBixcKI4hRdYSKtKnj5Qv/OknqW2rmkhhyM2Vk1ZUJFNJStzJy5PvZEYGfPIJ1K0rTkFJDOoUKpKVBX/8o9tWxA1j4Oyzpb19u2oiRYR/1PjCC7L4rMQNv77R2rWB9KD9++H99921K51Qp+Dns8/SRgTt7bcr96mGTBV07Ai9e8tJ8sf2KnEhmL7Rb7/pdzOROKJ9lEjion1UWCgZrDVrwtKlUqEmhVENmRhYskSkL7p0cduSlEa/m/Ej0dpH3mbcOBkldOyY8g4BVBMpJtq1U4eQAPS76T7qFAoLYbxPkikFI46CEUwTqW5d1ZCJmAUL5HujOM6YMZVLlqi+UWJRpzB+vIwSzjtPaiakAcE0kfr1U8mAiBg5UkaUqqAaF9q0kWkiY1TfyC3S2yns2JF2owQ/fk2kqVPl8ezZUk9ICcO558rf8eMlfEtxFH/xu/vvV30jt0hvp/Dss7Bzp2jop+l88SWXwIknwoYN8NprblvjATp3Fsewa5dWZ3OYr7+GmTOhfn3VOHKT9HYKnTpJctKDD7ptiWtkZMDw4dJ+9FHYt6/q/RUC35dx4+SmQnGEUaPk7y23QOPG7tqSzqS3Uzj/fJg3L5DNlab07QvHHw/r1sHf/ua2NR7grLPkO7Njh4w2lWozf74kqGVlwZAhbluT3qS3UwDPFtBxkowMeOABaY8ZI8lCShj8o4W//jVtkh7jiX+UcNNNwSusKYkjPZ3C+PFwzTWwcqXbliQNf/wjHHOMLOy98Ybb1niAs8+WiLXLLlMvWk0WLoTp06FOHbjrLretUdLPKRQVyeT55MlSclEBRAvQP1oYPFiF8sJijKyKPv+8ToDHiF/47pRT5PHZZ0Pz5m5apEA6OoWXXxYJ5Nxc6NnTbWuSDmNEgEyF8iKgYpaVEjHlhe/8fPqpfteSgfT6Vu/ZI4UEQOaEdT3hAIYPr6w7o0J5YSgthb//Hbp1q6zkpoQkmPBdcbF+15IBR5yCMaaOMeY9Y8wiY8wUYypfbYPtE8lxjjJpEmzaJMWKL7wwrm/lRdati65fQW4snnpKhP9fftltazyDfteSF6dGClcABdba9kAjoHuE+0RynDPs3Su1dkFuiXWUUAkVI4sBYwKJHo8/LqNRJSz6XUtenHIK3YCPfO2PgXMi3CeS45zhs88kbbddO0njVSoRTCivVi0VIwtLnz7Qvr2MQl991W1rPMGtt1buU+G75MApp9AY8Kd27gIOiXCfSI7DGDPYGJNvjMnfEmvlq+7dYdkyUdfSBcKg+IXycnICfc2bS9SlUgXlRwuPPaZp4RGwZIn8rVdPhe8iYsIEKfCUgKISTl0dtwINfe2GvseR7BPJcVhrJ1prc621uU2rk9nSti2ccUbsx6cBAwZIrkJxMRx2GKxfD+++67ZVHuD3v4cTTpATNnmy29YkNatXw5QpEga9aJEK34Vl2za4+26RHli4MO5v55RTmA308LW7AZ9EuE8kxykuUKeOfA9Bsk09VqAv8ZRPC1dlwSp59FEoKREncOSRblvjAcaNg927RZanQ4e4v51TTiEPaGmMWQwUAiuNMWPD7DM7RJ+SJFx/vUwfzZ8PM2a4bY0H6NdPItxm69c4FOvWweuviw+9/363rfEA27cH1HgTJNxZ04kXsdbuBSrGeN4VwT7B+pQkIStLZAeGDhWd+wsu0KCtKqlRAwYNctuKpObxx0UV5LLL4Nhj3bbGAzzzjGhrnXsunHlmQt5SV1yVKrnxRmjSRLTuZ81y2xoPsXMnfPut21YkFRs2wCuvyI2FJqlFwK5dgQp/CZT3V6egVEn9+gEp45EjdW0hIhYuFFGffv1k8lwB4MknJTCrb19Zk1fC8NJLIs/etavItScIdQpKWG6+WaaS5syRGRIVygvDCSfAwQfDihXw9ttuW+M6eXlw+OGByrcJWCtNDW66CcaODeiKJwh1CkpY3n03oA6tQnkRkJkZWEUdNSohseXJil/4rqAg0Dd6tH53IqJePbjzTvjd7xL6tsZ6bD4gNzfX5ufnu21GWtG69YFqln5yciS+XAnCvn1w9NESbvPWWzKVlIbodycGiotFqrhBA0df1hgz31qbG24/HSkoYVHxshioVQvuu0/aI0em7WhBvzsx8OKL0KaNZPi5gDoFJSwqXhYjAwdCq1ai6fDOO25b4wotWwbv1+9OCIqL4YknJIv5kKCqP3FHnYISlmBCeRkZKl4Wltq14d574bTTJK43DfFXVSuPCt9VwSuvwE8/yWp8r16umKBOQQlLeaE8Y2QrLYUjjnDbMg9w440wd25CQwqThW3bpMwEwKGHqvBdWPbsSQp5f3UKSkT4hfJKSwNT5SNGuGqSN6hRI23TwP/6V5Hs6dlTVMVV+C4Mr7wCGzdKEbCLL3bNDHUKStQMGSJJbTNnSqazEgErVsCVV8L777ttSULYti0g2fPQQ+7a4gn27BGlQICHH3b1RkKdghI1jRvDLbdIW0cLEfLBB/DGG3KF9FgYeCw8/bSMEnr0gNNPd9saD7Bxo8yxnXwyXHSRq6ZonoISE1u3Sgz6r7/KaKFTJ7ctSnKKimQRZvNmGS24tIiYCAoL5bvxyy/wxRcJ03HzPtbCli3QrFlcXl7zFJS40qSJyF+AjhYiIitL5GZBTpjHbsaiYdw4cQjnnacOISqMiZtDiAZ1CkrM3HWXKDp88IGEqKomUhhuvBGaNoV581KyQIVf48gv1aNFDiNgzx647Tb48Ue3LSlDnYISMx9+GLjhVU2kCKhXD+65R9optrYQTOPoqaf0uxCWV16RFfkkKoSuawpKzKiuTQz41xa2bIH8/ODZXR5EvwsxsGeP1CPduBGmTYNLLonr2yV0TcEYU8cY854xZpExZooxweOpjDDZGPOVMebfxpiaxpiexpgCY8wc36b1mDyC6trEQFYWTJ4My5aljEMA/S7EhD8voX17V/MSKuLU9NEVQIG1tj3QCOgeYr/OQE1r7enAQUAPX/8Ea20X37bCIZuUOKOaSDFy/vkpV4tSNY6ipHz28kMPJVWCo1NOoRvwka/9MXBOiP02A75SG+wr19/XGDPPGDM11ChDST5UE6maWAuzZ6eEgurJJ1fuU42jKpg0SeqTJtkoAZxzCo2Bnb72LiBLgkU0AAAbYklEQVSovJ+19gdr7TxjzO+BWsBMYCUw3FrbCWgBdK14nDFmsDEm3xiTv2XLFodMVqpLKE2kww932zKP0K+fxG1Oneq2JdVi82b4+GNpq8ZRBOzff+AoISO54n2csmYr0NDXbuh7HBRjzEXAbUAfa20JUAj4S8KvASoF6lprJ1prc621uU2bNnXIZMUJymsi+WuLDx+eUoE18eO88+Tvww97upbz44/L+nmfPqpxFBE1a4pGzN13x31xORaccgqzCawPdAM+CbaTMeZQYCjQ21r7i697CNDfGJMBtAOWOGSTkmDuuAMaNYLPPgvcOSpVMGiQTLovW+bZWs4bN8KECdIeOdJdWzzF8ceLN03C2XKnnEIe0NIYsxi5859tjGljjBlbYb+rkSmimb5Io0HAc8BA4GtgmrV2mUM2KQmmYUNJaAMdLURErVpyokCynD04WnjkEVkz7ds3+LqCUoHVq5P+h6F5Coqj7N4tlQS3bpVM5wsucNuiJOe33yQSafVqEczz0JzLunVShvq33+Dbb+GEE9y2KMnZvl1+HO3aSUa7wzWYw6HaR4or1K8fSNp98MGkvylyn8zMA0cL+/e7a08UjB4N+/ZB//7qECLiqadg506oUyfhDiEa1CkojnPTTdC8uSTsNm+uukhhufJKyM2Fq6/2xBRSXp7kJbz8sjzu0MFdezzBli2iFAgBcagkpabbBiipR1YWdO8usyH+CGK/LhJ4aoYkMdSsKSJ5SbjoWBG/xlFRUaDvoYegRQv9v1bJY4+Jznzv3kmvFKhrCkpcyM6G9esr96sWTgRYm7QOQjWOYmDDBjjqKFmRX7DANXkTXVNQXKW8WmZ5VAunCkpKRDGzXTvYtctta4KiGkcx4A/RuvRST+hdqVNQ4oLqIsVARobkKyxbJouSSUjz5sH79f9aBa1awcEHe6YalToFJS4E00WqW1e1cKrEmEDx9r/+FX7+2V17KmAtHBJEwEY1jsJw330yhXT88W5bEhHqFJS44NdFKn8H2aePLkaGpUsXWYzcvVumHZKIjz6SQUzdunLzqxpHUVDxDimJUaegxI0BA2RR8sMP5fHMmVLUXQmD/7Z7woTgq7ouUFoK994r7YcekiAC1TgKw7XXwvPPS3afh1CnoMSd7t3h3HMlb8cvDqlUQfv2Up5x3z4Ry0sC3noLvvkGDjsMbr3VbWs8wKefwquviif12J2QOgUlIfidwTPPBA9VVSowcqTkLyxcCHv3umrKvn0wbJi0R4zw1EyIO1grCqgAQ4eGXp1PUtQpKAkhNxf++Ee5viXJzW9yc9RR8MUXkhZeu7arprz8MqxaBW3bwjXXuGqKN/jnPyUZsXlzGDLEbWuiRp2CkjBGj5ab39dflwVLJQydOkGNGq6asHt3QBJ7zBj5/ylVsG8f3H+/tEeMEDEwj6FOQUkYRx8N118vC5S5uaqJFDHr14teTgLVB/Ly5H/ToIFExh55JPz+9wl7e+8ycSL8+KMo3157rdvWxIQ6BSWhtGsnf4uL5Rrn10RSxxCCkhI46yyRnP3nPxPyln59o/KBTwUF8OabCXl7bzNtmvx99FHPDqtU+0hJKKqdEwMvvQQ33iha/MuWifRyHNH/UTUoKYF334WLL046/aqEah8ZY+oYY94zxiwyxkwxJvjZMMb0NMYU+KquzTHGHBvpsUpqoNo5MXDttVKwYPVqePbZuL+d/o+qQY0aUnfZw5cxp6aPrgAKrLXtgUZA9yr2nWCt7eLbVkR5rOJxVBMpBmrWDGghjR4d0COPE/o/ioEpU0KrQHoMp5xCN+AjX/tj4Jwq9u1rjJlnjJnqGxVEc6zicYJpImVmqnZOWM4/H3r2FPXUOMf09utXuU/1japgyRIYOBCOO05Kbnocp5xCY2Cnr70LCCKbBcBKYLi1thPQAugaxbFKCuDXRMrJOXCEfY7eCoRn7FiZnnjlFdi8OS5v8dtvMiUO0KiR6huFxVq47TZZS7jqKjlpHscpp7AVaOhrN/Q9DkYhMMvXXgM0i+RYY8xgY0y+MSZ/S5yHzkr8GTBAFixLSyXM8bffREhSCcMJJ8D48YHEqDjwwguwYoWED//0k+obheVf/4KPPxb52CQvsxkpTjmF2UAPX7sb8EmI/YYA/Y0xGUA7YEkkx1prJ1prc621uU2bNnXIZCUZGDsWatWCv/1NrnVKGG6+WbSR4sDWrYGZqaeekv+LUgVFRYGM5dGjg+uKexCnnEIe0NIYsxgZDcw2xrQxxoytsN9zwEDga2CatXZZsGMdsknxAEccAXfcIe3bb09ofpa3sRZmz4b9+x17yYcegh07RMDwwgsde9nU5cknJSSrfftAAfIUQPMUFNf55ReZrti8WRKnLr/cbYs8wPXXy9rCiy/CDTdU++WWLJFrmzGwaJHMVClVsHOnFJXYvVsUUc86y22LwqI1mhXP0KBBoJ7MVVep/EVEdPdFbt93X7VCVPPyZCH5xBNl/aBbN3UIEdGwIcyZIyFZHnAI0aBOQUkKMjPlLrWkROUvIqJfPzjvPAmBvOeemF7CL2dRPiltzhw95xHTvn1A/C6F0OkjJSlQaYUY+P57ucXftw8+/1xKeUaBnvMY2L8f/vtfccgeQ6ePFE+h0goxcMwxgVHCn/8cddlHPecx8OKLMnX35z+7bUncUKegJAUqrRAj990nIVxLlkiGWRQcemjwfj3nIdiyBYYPl/b557trSxxRp6AkBcHkLyAlp2ydpW5dyTi7996oyqKVlgav/6JyFlVwxx2BmN2LL3bbmrjhTcFvJeXwZ8wOGybTF7VqSenO+fPdtcsTnH9+1HeuL78MP/wABx0k24YNMkIYM0azl4MyY4aswNepI07Ywyqo4dCRgpI0lJe/WLBAIpImTpSIGCVCdu2Cb7+tcpdNmwJLEa+8IoXdVM6iCn75JZALMnKk1M9OYdQpKEnJ8ccHLlw33CABNkoYVqwQpc5LLpHSdiG44w7JverVCy69NIH2eZWxY8VzduwYSL9PYdQpKEnLsGFyU7ZsmSgKKGE44gho3BhWrQq5MDBjBvzjH7J28PzzKT0L4hz33AN33SXDKo+W2IwGdQpK0lKnjkQAAjzwgGY6hyUzEyZMkPZjj0G5fJ68PFkz6NVLHl98sZxLJQKysuSu5OST3bYkIahTUJKan36SEgKgmc4R0bmzKAv69f2Li8syl9evD+w2fbqew7C8/76s0aQZmtGsJDWadRsDxcXQoQMsXw5DhtB66lN6DqNlyRI5h4ceKu2DDnLbomqjGc1KSqBZtzFQt64UqKhRA55+mlprfwi6m57DEJSUwHXXSYZ4794p4RCiQZ2CktSEyq49/PDE2uE5Tj1VomY++ICN9Y4OuotmLofg6afh66+hZUtZm0kz1CkoSU2oTOcOHRJvi+e4/Xb+VdSTX3+t/JRmLocgPz+QRv/SSyKRnWaoU1CSmgEDJIEtJ0fCJ/2lif/9b01qC8fGjVKLB2DE+V/Sv9nHGCPncuJETVSrxK5d0L+/TBvdeqtMHaUhjjgFY0wdY8x7xphFxpgpxgSPfjbGnG2MmePb1htjrjbG9DTGFJTrP9YJm5TUoXym808/icxPaSlceWVaBodERGkpDBwIhYVw16mfMvyj3/F/Na6gdGuhZi6HYvp0WLlS6iQ88YTb1riGI9FHxpjrgFxr7Y3GmPeAZ6y1H4Y55n3gPuAwoKO1NqLBbLDoo99++42CggL27NkT2wdIAerUqUOrVq3IzMx025S4s28fnHGGSGHUqyf101W3R8jLk6Q/f7RRvXrww/ISWvzpLPjyS7kTfvNNzVoLxTvvQNu2sqUYkUYfOZWe1w2Y6mt/DJwDhHQKxpgs4Chr7WJjzGFAX2PMxcB64FIbpacqKCigQYMGtG7dmhCDlJTGWsu2bdsoKCigTZs2bpsTd2rVkmvbggWUzZf78xcgfR2DPx+hqCjQt38/fPxpDQZMnix3wH//u5SPTOF6ANXikkvctsB1nFpTaAzs9LV3AYeE2b87MNvXXgkMt9Z2AloAXSvubIwZbIzJN8bkbwlSj3bPnj00btw4LR0CgDGGxo0bp9VI6fnnK/cVFcldcroybNiBDgFEaXbYMEQv5OWXpfO222Du3ITbl5Ts3Qt9+0q0kQI45xS2Av5l+oa+x1XRB3jP1y4EZvnaa4BmFXe21k601uZaa3ObNm0a9AXT1SH4SbfPr/kLlQl7Ti6/XBzCb7+JEt5PPyXMtqTlvvvgX/+S7O+SEretSQqccgqzgR6+djfgk1A7+hahz0GmmQCGAP2NMRlAO2CJQzZ5Dmsty5cvD/rc8uXLKS0tTbBFyYvmL1Tm4IOD9x9wrp58En73O1mYCZbmnE68/77kJNSsGUj2UxxzCnlAS2PMYuTOf7Yxpo0xZmyQfU8Fllpr/XMdzwEDga+BadbaZQ7Z5DlGjx7NypUrgz63cuVKRo8enWCLkpdQ+QtnnJF4W5KB//wHtm+v3F8pHyEzE956S6oXnXZawuxLOpYulZETwOjR6X0uKuCIU7DW7rXWXmitPclae6UVVltr7wqy7zxr7UXlHm+y1p5trT3VWvuQE/aEIy9PNHWSSXVz9erVbN26ld4hYqN79+7Ntm3bWL16dYItS04q5i/4ZxXfegvee6/qY1ONFStk4R3gD38InJOQ+QiHHnrg8GFruNneFGPzZslB2LVLptGGDnXbouTCWuuprWPHjrYiy5Ytq9QXijfesDYry1rR3JQtK0v63WTEiBH2u+++q3KfZcuW2REjRlT5fDozapT8Pxs0sDZdTsX27dYec4x87r59rS0pieLg0lJrH3lETtjixXGzMakoKbH2zDPlhJ12mrVFRW5blDCAfBvBNTblMpqNqXq74orKERpFRdJf1XHh2LNnD/379+eMM87goosuYufOnVx22WV07tyZyy+/nH379rFnzx769OnDmWeeyaWXXsr+/fvLjl+1ahVtfbHRCxYsoJdP+L5r16788IMImh133HE6UqiCYcOgXz+pnnj22bK+kEyjQSfJy5ORQKNG8P338llff10+b1R8952csN//HoJE9qUcGRkiY3HiiZKsVreu2xYlHSnnFNxi4sSJtG/fnrlz53LRRRcxbtw4jj/+eL744guOPvpoXnvtNZYuXYoxhi+//JLrrruO3bt3B32tDh06cMQRR3DzzTdz1llncfTRAUEz6zGp80RiDLz2mlwsf/4ZCgpSswaDPx+hfLTR1q1yjYsKY6SK0cknSyZvz55SpzPV6d0bvvkmoJmiHEDKOYUDJ4Yqbzk5wY/Lyan6uHAsX76cTp06ATBo0CB++uknzvCtep5xxhksW7aMDh06cOKJJ9KnTx9mzJhBvXr1yo6vU6cOv5ZTLrvllluYMGECN910U1nfr7/+Sl29s6mSevUkYasiqZTDECwfobg4xs+XlQUffCB5DAsWyAUzmIKe15k8GT79NPBYI41CknJOIRzBolacUIxs27YtX/sSYMaMGUPbtm356quvAPjqq6844YQTWLhwIaeffjrvvvsuW7du5bPPPis7vmfPnkybNq3s8cMPP8zw4cMZNWpUWd+0adM4//zzq2doGrBxY/D+VMlhCBVJGvPna9ECZs2CVq3giy9kKmnv3pjtSzo++giuvRa6d5cRkVIlaecUKkatOKUYOXjwYBYu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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "\n",
    "def plot_sin_cos(x):\n",
    "    sin_x = np.sin(x)\n",
    "    cos_x = np.cos(x)\n",
    "    plt.plot(x, cos_x, color=\"blue\", marker='o', linewidth=2, linestyle=\"-\", label=\"cos(x)\")\n",
    "    plt.plot(x, sin_x, color=\"red\", linewidth=2, linestyle=\"--\", label=\"sin(x)\")\n",
    "    # 绘制正弦曲线,使用红色的、破折线,宽度为 2 像素的线条\n",
    "    plt.legend(loc='lower left')\n",
    "\n",
    "\n",
    "if __name__ == '__main__':\n",
    "    x_data = np.linspace(0, 2 * np.pi)\n",
    "    plot_sin_cos(x_data)\n",
    "    plt.show()  # 显示创建的绘图对象\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "标签相关函数\n",
    "\n",
    "| 函数 | 描述 |\n",
    "| :---- | :---- |\n",
    "| title() | 为当前绘图添加标题 |\n",
    "| legend() | 为当前绘图放置图注 |\n",
    "| annotate() | 为指定数据点创建注释 |\n",
    "| xlabel(s) | 设置x轴标签 |\n",
    "| ylabel(s) | 设置y轴标签 |\n",
    "| xticks() | 设置x轴刻度位置和标签 |\n",
    "| yticks() | 设置y轴刻度位置和标签 |"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "matplotlib.pyplot.yticks(ticks=None, labels=None, **kwargs)\n",
    "matplotlib.pyplot.xticks(ticks=None, labels=None, **kwargs)\n",
    "\n",
    "ticks: array-like, optional\n",
    "labels:array-like, optional\n",
    "\n",
    "matplotlib.pyplot.axhline(y=0, xmin=0, xmax=1, **kwargs)\n",
    "matplotlib.pyplot.axvline(x=0, ymin=0, ymax=1, **kwargs)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 设定图名与线条标注"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "\n",
    "def plot_sin_cos(x):\n",
    "    sin_x = np.sin(x)\n",
    "    cos_x = np.cos(x)\n",
    "    plt.plot(x, cos_x, color=\"blue\", marker='o', linewidth=2, linestyle=\"-\", label=\"cos(x)\")\n",
    "    plt.plot(x, sin_x, color=\"red\", linewidth=2, linestyle=\"--\", label=\"sin(x)\")\n",
    "    # 绘制正弦曲线,使用红色的、破折线,宽度为 2 像素的线条\n",
    "    plt.legend(loc='lower left')\n",
    "\n",
    "\n",
    "def draw_label():\n",
    "    plt.title('curve of sin and cos')\n",
    "    plt.xlabel('x')\n",
    "    plt.ylabel('y')\n",
    "\n",
    "    \n",
    "if __name__ == '__main__':\n",
    "    x_data = np.linspace(0, 2 * np.pi)\n",
    "    plot_sin_cos(x_data)\n",
    "    draw_label()\n",
    "    plt.show()  # 显示创建的绘图对象"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "坐标轴相关函数\n",
    "\n",
    "| 函数 | 描述 |\n",
    "| :---- | :---- |\n",
    "| xlim(xmin,xmax) | 设置当前x轴取值范围 |\n",
    "| ylim(ymin,ymax) | 设置当前y轴取值范围 |\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "绘制直线相关函数\n",
    "\n",
    "| 函数 | 描述 |\n",
    "| :---- | :---- |\n",
    "| axhline(x=0, ymin=0, ymax=1) | 绘制水平线,y取值从0到1为整个区间。 |\n",
    "| hlines() | 绘制水平线 |\n",
    "| axvline(x=0,   ymin=0, ymax=1) | 绘制垂直线,y取值从0到1为整个区间。 |\n",
    "| vlines() | 绘制垂直线 |"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 设定坐标轴上下限"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def draw_lim():\n",
    "    plt.ylim(-1.1, 1.1)  # 设置纵轴的上下限\n",
    "    plt.yticks([-1, 0, +1])  # 设置纵轴刻度\n",
    "    plt.xticks([0, np.pi / 2, np.pi, 3 * np.pi / 2, 2 * np.pi],\n",
    "               [r'$0$', r'$\\pi/2$', r'$\\pi$', r'$3\\pi/2$', r'$2\\pi$'])  # 转数学表示\n",
    "    plt.axhline(0, linestyle='--', color='black', linewidth=1)  # 绘制水平线x轴,0可省\n",
    "    plt.axvline(0, linestyle='--', color='black', linewidth=1)  # 绘制垂直线y轴,0可省\n"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "[0, np.pi / 2, np.pi, 3 * np.pi / 2, 2 * np.pi] 需要显示的标记点\n",
    "\n",
    "[r'$0$', r'$\\pi/2$', r'$\\pi$', r'$3\\pi/2$', r'$2\\pi$']\n",
    "r 表示原生字符串\n",
    "$$符号之间的字符串会转为数学表示"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "plt.rcParams['font.sans-serif'] = ['SimSun']  # 在此页面上只可用此字体,本地可以使用'FangSong'和Simhei等字体\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "\n",
    "\n",
    "def plot_sin_cos(x):\n",
    "    sin_x = np.sin(x)\n",
    "    cos_x = np.cos(x)\n",
    "    plt.plot(x, cos_x, color=\"blue\", marker='o', linewidth=2, linestyle=\"-\", label=\"cos(x)\")\n",
    "    plt.plot(x, sin_x, color=\"red\", linewidth=2, linestyle=\"--\", label=\"sin(x)\")\n",
    "    # 绘制正弦曲线,使用红色的、破折线,宽度为 2 像素的线条\n",
    "    plt.legend(loc='lower left')\n",
    "\n",
    "\n",
    "def draw_lim():\n",
    "    plt.ylim(-1.1, 1.1)  # 设置纵轴的上下限\n",
    "    plt.yticks([-1, 0, +1])  # 设置纵轴刻度\n",
    "    plt.xticks([0, np.pi / 2, np.pi, 3 * np.pi / 2, 2 * np.pi],\n",
    "               [r'$0$', r'$\\pi/2$', r'$\\pi$', r'$3\\pi/2$', r'$2\\pi$'])  # 转数学表示\n",
    "    plt.axhline(0, linestyle='--', color='black', linewidth=1)  # 绘制水平线x轴,0可省\n",
    "    plt.axvline(0, linestyle='--', color='black', linewidth=1)  # 绘制垂直线y轴,0可省\n",
    "    # plt.axvline(np.pi,linestyle='--', color='black', linewidth=1)  # 绘制垂直线,pi\n",
    "\n",
    "\n",
    "def draw_label():\n",
    "    plt.title('curve of sin and cos')\n",
    "    plt.xlabel('x')\n",
    "    plt.ylabel('y')\n",
    "\n",
    "\n",
    "\n",
    "if __name__ == '__main__':\n",
    "    x_data = np.linspace(0, 2 * np.pi)\n",
    "    plot_sin_cos(x_data)\n",
    "    draw_label()\n",
    "    draw_lim()\n",
    "    plt.show()  # 显示创建的绘图\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "填充相关函数\n",
    "\n",
    "| 函数 | 描述 |\n",
    "| :---- | :---- |\n",
    "| axhspan() | 水平区域 |\n",
    "| axvspan() | 竖直区域 |\n",
    "| fill_between() | 填充两条曲线围起的区域,区间由横坐标限定 |\n",
    "| fill_betweenx() | 填充两条曲线围起的区域,区间由纵坐标限定 |"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 填充区域"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def fill_area(x):\n",
    "    \"\"\"填充pi/2与3*pi/2之间,x轴与cos(x)包围的区域\"\"\"\n",
    "    plt.fill_between(x, np.cos(x), where=((x >= np.pi / 2) & (x <= 3 * np.pi / 2)), facecolor='grey', alpha=0.25)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def fill_span_area():\n",
    "    \"\"\"填充x轴上方y值在(0.25,0.5)之间区域,绿色,透明度50%;\n",
    "    填充x轴上方y值在(-0.5,-0.25)之间区域,绿色,透明度25%;\n",
    "    填充x轴上方x值在(3*np.pi/2-0.3,3*np.pi/2+0.3)之间区域,红色,透明度25%\n",
    "    填充x轴上方x值在(np.pi/2-0.3,np.pi/2+0.3)之间区域,红色,透明度50%\n",
    "    \"\"\"\n",
    "    # 整个区间为0,1.0,此例中0,0.5表示取x轴前半部分区间,0.5,1.0表示取后半部区间\n",
    "    plt.axhspan(0.25, 0.5, 0, 0.5, color='green', alpha=0.5)\n",
    "    plt.axhspan(-0.5, -0.25, color='green', alpha=0.25)\n",
    "    plt.axvspan(3 * np.pi / 2 - 0.3, 3 * np.pi / 2 + 0.3, color='red', alpha=0.25)\n",
    "    # 整个区间为0,1.0,此例中0.5,1.0表示取x轴上部区间,0,0.5表示取x轴下部区间\n",
    "    plt.axvspan(np.pi / 2 - 0.3, np.pi / 2 + 0.3, 0.5, 1.0, color='red', alpha=0.5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python3.7/dist-packages/matplotlib/font_manager.py:1241: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans.\n",
      "  (prop.get_family(), self.defaultFamily[fontext]))\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "plt.rcParams['font.sans-serif'] = ['SimSun']  # 在此页面上只可用此字体,本地可以使用'FangSong'和Simhei等字体\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "\n",
    "\n",
    "def plot_sin_cos(x):\n",
    "    sin_x = np.sin(x)\n",
    "    cos_x = np.cos(x)\n",
    "    plt.plot(x, cos_x, color=\"blue\", marker='o', linewidth=2, linestyle=\"-\", label=\"cos(x)\")\n",
    "    plt.plot(x, sin_x, color=\"red\", linewidth=2, linestyle=\"--\", label=\"sin(x)\")\n",
    "    # 绘制正弦曲线,使用红色的、破折线,宽度为 2 像素的线条\n",
    "    plt.legend(loc='lower left')\n",
    "\n",
    "\n",
    "def draw_lim():\n",
    "    plt.ylim(-1.1, 1.1)  # 设置纵轴的上下限\n",
    "    plt.yticks([-1, 0, +1])  # 设置纵轴刻度\n",
    "    plt.xticks([0, np.pi / 2, np.pi, 3 * np.pi / 2, 2 * np.pi],\n",
    "               [r'$0$', r'$\\pi/2$', r'$\\pi$', r'$3\\pi/2$', r'$2\\pi$'])  # 转数学表示\n",
    "    plt.axhline(0, linestyle='--', color='black', linewidth=1)  # 绘制水平线x轴,0可省\n",
    "    plt.axvline(0, linestyle='--', color='black', linewidth=1)  # 绘制垂直线y轴,0可省\n",
    "    # plt.axvline(np.pi,linestyle='--', color='black', linewidth=1)  # 绘制垂直线,pi\n",
    "\n",
    "\n",
    "def draw_label():\n",
    "    plt.title('curve of sin and cos')\n",
    "    plt.xlabel('x')\n",
    "    plt.ylabel('y')\n",
    "\n",
    "\n",
    "def fill_area(x):\n",
    "    \"\"\"填充pi/2与3*pi/2之间,x轴与cos(x)包围的区域\"\"\"\n",
    "    plt.fill_between(x, np.cos(x), where=((x >= np.pi / 2) & (x <= 3 * np.pi / 2)), facecolor='grey', alpha=0.25)\n",
    "\n",
    "\n",
    "if __name__ == '__main__':\n",
    "    x_data = np.linspace(0, 2 * np.pi)\n",
    "    plot_sin_cos(x_data)\n",
    "    draw_label()\n",
    "    draw_lim()\n",
    "    fill_area(x_data)\n",
    "    plt.show()  # 显示创建的绘图\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "plt.rcParams['font.sans-serif'] = ['SimSun']  # 在此页面上只可用此字体,本地可以使用'FangSong'和Simhei等字体\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "\n",
    "\n",
    "def plot_sin_cos(x):\n",
    "    sin_x = np.sin(x)\n",
    "    cos_x = np.cos(x)\n",
    "    plt.plot(x, cos_x, color=\"blue\", marker='o', linewidth=2, linestyle=\"-\", label=\"cos(x)\")\n",
    "    plt.plot(x, sin_x, color=\"red\", linewidth=2, linestyle=\"--\", label=\"sin(x)\")\n",
    "    # 绘制正弦曲线,使用红色的、破折线,宽度为 2 像素的线条\n",
    "    plt.legend(loc='lower left')\n",
    "\n",
    "\n",
    "def draw_lim():\n",
    "    plt.ylim(-1.1, 1.1)  # 设置纵轴的上下限\n",
    "    plt.yticks([-1, 0, +1])  # 设置纵轴刻度\n",
    "    plt.xticks([0, np.pi / 2, np.pi, 3 * np.pi / 2, 2 * np.pi],\n",
    "               [r'$0$', r'$\\pi/2$', r'$\\pi$', r'$3\\pi/2$', r'$2\\pi$'])  # 转数学表示\n",
    "    plt.axhline(0, linestyle='--', color='black', linewidth=1)  # 绘制水平线x轴,0可省\n",
    "    plt.axvline(0, linestyle='--', color='black', linewidth=1)  # 绘制垂直线y轴,0可省\n",
    "    # plt.axvline(np.pi,linestyle='--', color='black', linewidth=1)  # 绘制垂直线,pi\n",
    "\n",
    "\n",
    "def draw_label():\n",
    "    plt.title('curve of sin and cos')\n",
    "    plt.xlabel('x')\n",
    "    plt.ylabel('y')\n",
    "\n",
    "\n",
    "def fill_span_area():\n",
    "    \"\"\"填充x轴上方y值在(0.25,0.5)之间区域,绿色,透明度50%;\n",
    "    填充x轴上方y值在(-0.5,-0.25)之间区域,绿色,透明度25%;\n",
    "    填充x轴上方x值在(3*np.pi/2-0.3,3*np.pi/2+0.3)之间区域,红色,透明度25%\n",
    "    填充x轴上方x值在(np.pi/2-0.3,np.pi/2+0.3)之间区域,红色,透明度50%\n",
    "    \"\"\"\n",
    "    # 整个区间为0,1.0,此例中0,0.5表示取x轴前半部分区间,0.5,1.0表示取后半部区间\n",
    "    plt.axhspan(0.25, 0.5, 0, 0.5, color='green', alpha=0.5)\n",
    "    plt.axhspan(-0.5, -0.25, color='green', alpha=0.25)\n",
    "    plt.axvspan(3 * np.pi / 2 - 0.3, 3 * np.pi / 2 + 0.3, color='red', alpha=0.25)\n",
    "    # 整个区间为0,1.0,此例中0.5,1.0表示取x轴上部区间,0,0.5表示取x轴下部区间\n",
    "    plt.axvspan(np.pi / 2 - 0.3, np.pi / 2 + 0.3, 0.5, 1.0, color='red', alpha=0.5)\n",
    "\n",
    "if __name__ == '__main__':\n",
    "    x_data = np.linspace(0, 2 * np.pi)\n",
    "    plot_sin_cos(x_data)\n",
    "    draw_label()\n",
    "    draw_lim()\n",
    "    fill_span_area()\n",
    "    plt.show()  # 显示创建的绘图\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "保存与显示相关函数\n",
    "\n",
    "| 函数 | 描述 |\n",
    "| :---- | :---- |\n",
    "| savefig('文件名') | 保存绘制的图像,必须置于绘制完成之后和show()之前<br />需先pip   install pillow库 |\n",
    "| show() | 显示绘制的图像,同时清空缓冲区 |"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 保存图片文件"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "注意:savefig()函数必须置于绘制完成之后和show()之前"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "\n",
    "def plot_sin_cos(x):\n",
    "    sin_x = np.sin(x)\n",
    "    cos_x = np.cos(x)\n",
    "    plt.plot(x, cos_x, color=\"blue\", marker='o', linewidth=2, linestyle=\"-\", label=\"cos(x)\")\n",
    "    plt.plot(x, sin_x, color=\"red\", linewidth=2, linestyle=\"--\", label=\"sin(x)\")\n",
    "    # 绘制正弦曲线,使用红色的、破折线,宽度为 2 像素的线条\n",
    "    plt.legend(loc='lower left')\n",
    "\n",
    "\n",
    "if __name__ == '__main__':\n",
    "    x_data = np.linspace(0, 2 * np.pi)\n",
    "    plot_sin_cos(x_data)\n",
    "    plt.savefig('sin_cos.jpg')\n",
    "    plt.show()  # 显示创建的绘图对象"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 中文显示--rc参数"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "matplotlib默认字体由一组rcParams控制,默认使用安装在用户计算机上的英文字体系列,如Helvetica, Times等,中文无法正常显示。  \n",
    "可以通过设置rcParams参数值来修改用于显示的中文字体。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在此页面上<font color=Red>__只可用SimSun__</font>字体,本地可以使用<font color=Red>__'FangSong'和Simhei等__</font>字体"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "| **序号** | **属性** | **说明** |\n",
    "| :---- | :---- | :---- |\n",
    "| 1 | plt.rcParams[**'**axes.unicode_minus**'**] = False | 字符显示 |\n",
    "| 2 | plt.rcParams[**'**font.sans-serif**'**] = **'**SimHei**'** | 设置字体 |\n",
    "| 3 | plt.rcParams[**'**lines.linestyle**'**] = **'**-.** '** | 线条样式 |\n",
    "| 4 | plt.rcParams[**'**lines.linewidth**'**] = 3 | 线条宽度 |\n",
    "| 5 | plt.rcParams[**'**lines.color**'**] = **'**blue**'** | 线条颜色 |\n",
    "| 6 | plt.rcParams[**'**lines.marker**'**] = None | 默认标记 |\n",
    "| 7 | plt.rcParams[**'**lines.markersize**'**] = 6 | 标记大小 |\n",
    "| 8 | plt.rcParams[**'**lines.markeredgewidth**'**] = 0.5 | 标记附近的线宽 |\n",
    "| 9 | plt.rcParams[**'**xtick.labelsize**'**] | 横轴字体大小 |\n",
    "| 10 | plt.rcParams[**'**ytick.labelsize**'**] | 纵轴字体大小 |\n",
    "| 11 | plt.rcParams[**'**xtick.major.size**'**] | x轴最大刻度 |\n",
    "| 12 | plt.rcParams[**'**ytick.major.size**'**] | y轴最大刻度 |\n",
    "| 13 | plt.rcParams[**'**axes.titlesize**'**] | 子图的标题大小 |\n",
    "| 14 | plt.rcParams[**'**axes.labelsize**'**] | 子图的标签大小 |\n",
    "| 15 | plt.rcParams[**'**figure.dpi**'**] | 图像分辨率 |\n",
    "| 16 | plt.rcParams[**'**figure.figsize**'**] | 图像显示大小 |\n",
    "| 17 | plt.rcParams[**'**savefig.dpi**'**] | 图片像素 |"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.rcParams['font.sans-serif'] = ['SimSun']  # 宋体\n",
    "# Mac下面用:Heiti TC、Songti SC或Arial Unicode MS\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "# 解决保存图像是负号'-'显示为方块的问题\n"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "在需要显示中文的语句中fontproperties指定字体(不是所有plt方法都支持此属性)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.title('正弦余弦图像',fontproperties=\"SimSun\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "plt.rcParams['font.sans-serif'] = ['SimSun']  # 宋体\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "\n",
    "\n",
    "def plot_sin_cos(x):\n",
    "    sin_x = np.sin(x)\n",
    "    cos_x = np.cos(x)\n",
    "    plt.plot(x, cos_x, color=\"blue\", marker='o', linewidth=2, linestyle=\"-\", label=\"cos(x)\")\n",
    "    plt.plot(x, sin_x, color=\"red\", linewidth=2, linestyle=\"--\", label=\"sin(x)\")\n",
    "    # 绘制正弦曲线,使用红色的、破折线,宽度为 2 像素的线条\n",
    "    plt.legend(loc='lower left')\n",
    "\n",
    "\n",
    "def draw_label():\n",
    "    plt.title('正弦余弦函数曲线')\n",
    "    # plt.title('正弦余弦图像',fontproperties=\"SimSun\")  # 可以在语句中指定中文字体\n",
    "    plt.xlabel('x(弧度)')\n",
    "    plt.ylabel('y')\n",
    "\n",
    "    \n",
    "if __name__ == '__main__':\n",
    "    x_data = np.linspace(0, 2 * np.pi)\n",
    "    plot_sin_cos(x_data)\n",
    "    draw_label()\n",
    "    plt.show()  # 显示创建的绘图对象"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据点标注"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "matplotlib.pyplot.annotate(text, xy, *args, **kwargs)\n",
    "参数:\n",
    "text:str,标注的文本\n",
    "\n",
    "xy:(float, float),(横坐标,纵坐标) 箭头尖端,需要加标注的点的坐标\n",
    "\n",
    "xytext:(float, float), 缺省为 xy,(横坐标,纵坐标) 放置标注文本的点的坐标 (x, y) \n",
    "\n",
    "xycoords:被注释点的坐标系属性\n",
    "\n",
    "textcoords :注释文本的坐标系属性,默认与xycoords属性值相同,允许输入以下两种:\n",
    "    'offset points'相对于被注释点xy的偏移量(单位是点)\n",
    "    'offset pixels'相对于被注释点xy的偏移量(单位是像素)\n",
    "    \n",
    "arrowprops:箭头,字典类型,{facecolor= '颜色',shrink = '数字' <1 收缩箭头}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "plt.rcParams['font.sans-serif'] = ['SimSun']  # 在此页面上只可用此字体,本地可以使用'FangSong'和Simhei等字体\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "\n",
    "\n",
    "def plot_sin_cos(x):\n",
    "    sin_x = np.sin(x)\n",
    "    cos_x = np.cos(x)\n",
    "    plt.plot(x, cos_x, color=\"blue\", marker='o', linewidth=2, linestyle=\"-\", label=\"cos(x)\")\n",
    "    plt.plot(x, sin_x, color=\"red\", linewidth=2, linestyle=\"--\", label=\"sin(x)\")\n",
    "    # 绘制正弦曲线,使用红色的、破折线,宽度为 2 像素的线条\n",
    "    plt.legend(loc='lower right')\n",
    "\n",
    "\n",
    "def draw_lim():\n",
    "    plt.ylim(-1.1, 1.1)  # 设置纵轴的上下限\n",
    "    plt.yticks([-1, 0, +1])  # 设置纵轴刻度\n",
    "    plt.xticks([0, np.pi / 2, np.pi, 3 * np.pi / 2, 2 * np.pi],\n",
    "               [r'$0$', r'$\\pi/2$', r'$\\pi$', r'$3\\pi/2$', r'$2\\pi$'])  # 转数学表示\n",
    "    plt.axhline(0, linestyle='--', color='black', linewidth=1)  # 绘制水平线x轴,0可省\n",
    "    plt.axvline(0, linestyle='--', color='black', linewidth=1)  # 绘制垂直线y轴,0可省\n",
    "    # plt.axvline(np.pi,linestyle='--', color='black', linewidth=1)  # 绘制垂直线,pi\n",
    "\n",
    "\n",
    "def draw_label():\n",
    "    plt.title('正弦余弦函数曲线')\n",
    "    plt.xlabel('x(弧度)')\n",
    "    plt.ylabel('y')\n",
    "\n",
    "\n",
    "def add_annotate_upper():\n",
    "    \"\"\"数据点标注\"\"\"\n",
    "    t = 2 * np.pi / 3\n",
    "    plt.plot([t, t], [0, np.sin(t)], color='red', linewidth=2.5, linestyle=\"--\")  # 过(t,0),(t,sin(t))画线段,红色,破折线\n",
    "    plt.scatter([t, ], [np.cos(t), ], 50, color='blue')  # 为 (t,cos(t))处画一个蓝色圆点\n",
    "    # 为 sin(t)处加注释\n",
    "    plt.annotate(r'$\\sin(\\frac{2\\pi}{3})=\\frac{\\sqrt{3}}{2}$',\n",
    "                 xy=(t, np.sin(t)), xycoords='data',\n",
    "                 xytext=(+30, 0), textcoords='offset points', fontsize=16,\n",
    "                 arrowprops=dict(arrowstyle=\"->\", connectionstyle=\"arc3,rad=.2\"))\n",
    "\n",
    "\n",
    "if __name__ == '__main__':\n",
    "    x_data = np.linspace(0, 2 * np.pi)\n",
    "    plot_sin_cos(x_data)\n",
    "    draw_label()\n",
    "    draw_lim()\n",
    "    add_annotate_upper()\n",
    "    plt.show()  # 显示创建的绘图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "plt.rcParams['font.sans-serif'] = ['SimSun']  # 在此页面上只可用此字体,本地可以使用'FangSong'和Simhei等字体\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "\n",
    "\n",
    "def plot_sin_cos(x):\n",
    "    sin_x = np.sin(x)\n",
    "    cos_x = np.cos(x)\n",
    "    plt.plot(x, cos_x, color=\"blue\", marker='o', linewidth=2, linestyle=\"-\", label=\"cos(x)\")\n",
    "    plt.plot(x, sin_x, color=\"red\", linewidth=2, linestyle=\"--\", label=\"sin(x)\")\n",
    "    # 绘制正弦曲线,使用红色的、破折线,宽度为 2 像素的线条\n",
    "    plt.legend(loc='lower right')\n",
    "\n",
    "\n",
    "def draw_lim():\n",
    "    plt.ylim(-1.1, 1.1)  # 设置纵轴的上下限\n",
    "    plt.yticks([-1, 0, +1])  # 设置纵轴刻度\n",
    "    plt.xticks([0, np.pi / 2, np.pi, 3 * np.pi / 2, 2 * np.pi],\n",
    "               [r'$0$', r'$\\pi/2$', r'$\\pi$', r'$3\\pi/2$', r'$2\\pi$'])  # 转数学表示\n",
    "    plt.axhline(0, linestyle='--', color='black', linewidth=1)  # 绘制水平线x轴,0可省\n",
    "    plt.axvline(0, linestyle='--', color='black', linewidth=1)  # 绘制垂直线y轴,0可省\n",
    "    # plt.axvline(np.pi,linestyle='--', color='black', linewidth=1)  # 绘制垂直线,pi\n",
    "\n",
    "\n",
    "def draw_label():\n",
    "    plt.title('正弦余弦函数曲线')\n",
    "    plt.xlabel('x(弧度)')\n",
    "    plt.ylabel('y')\n",
    "\n",
    "\n",
    "def add_annotate_lower():\n",
    "    \"\"\"数据点标注\"\"\"\n",
    "    t = 2 * np.pi / 3\n",
    "    plt.plot([t, t], [0, np.cos(t)], color='blue', linewidth=2.5, linestyle=\"--\")  # 过(t,0),(t,cos(t))画线段,蓝色,破折线\n",
    "    plt.scatter([t, ], [np.sin(t), ], 50, color='red')  # 为 (t,sin(t))处画一个红色圆点\n",
    "    # 为 cos(t)处加注释\n",
    "    plt.annotate(r'$\\cos(\\frac{2\\pi}{3})=-\\frac{1}{2}$',\n",
    "                 xy=(t, np.cos(t)), xycoords='data',\n",
    "                 xytext=(-90, -50), textcoords='offset points', fontsize=16,\n",
    "                 arrowprops=dict(arrowstyle=\"->\", connectionstyle=\"arc3,rad=.2\"))\n",
    "\n",
    "\n",
    "if __name__ == '__main__':\n",
    "    x_data = np.linspace(0, 2 * np.pi)\n",
    "    plot_sin_cos(x_data)\n",
    "    draw_label()\n",
    "    draw_lim()\n",
    "    add_annotate_lower()\n",
    "    plt.show()  # 显示创建的绘图"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 绘制多子图"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Matplotlib提供将同一画布划分成多个子区域的方法,可以将多个图形在同一个画布上不同区域绘制。可应用subplot()函数实现,使用语法如下:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "subplot(nrows, ncols, index, **kwargs)\n",
    "subplot(pos, **kwargs)\n",
    "subplot(**kwargs)\n",
    "subplot(ax)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "参数nrows, ncols, index分别表示行数、列数和序号。  \n",
    "当前画布被划分为nrows×ncols个子区域,index表示当前图绘制在第index个子区域。  \n",
    "当行数、列数和序号全部小于10时,也可以将三个数字合并成一个三位数字来表示。  \n",
    "例如subplot(2, 3, 3) 和subplot(233) 都可以创建一个2行3列的绘图区域,当前图占用序号为3的区域。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "将一个画布分三个子图区域,第一行分两个子图,分别绘制正弦和余弦函数曲线,第二行为一个子图区域,绘制函数sin(6x)的曲线。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt               # 导入pyplot子库命名为plt\n",
    "import numpy as np                            # 导入numpy库命名为np\n",
    "\n",
    "x_arr = np.linspace(0, 2*np.pi, 256)          # 0到2pi之间产生256个等间距的点的数组\n",
    "sin_arr = np.sin(x_arr)                       # 根据x值计算50个sin(x)值,数组类型\n",
    "cos_arr = np.cos(x_arr)                       # 根据x值计算50个cos(x)值,数组类型\n",
    "plt.subplot(2, 2, 1)                          # 分成2行2列,占用第1个位置\n",
    "plt.plot(x_arr, sin_arr, '--r', lw=2)         # 红色破折线\n",
    "plt.subplot(2, 2, 2)                          # 分成2行2列,占用第2个\n",
    "plt.plot(x_arr, cos_arr, ':g')                # 绿色虚线\n",
    "plt.subplot(2, 1, 2)                          # 分成2行1列,占用第2个\n",
    "plt.plot(x_arr, np.sin(6*x_arr), '-b', lw=2)  # y=\"sin(6x)\"函数曲线\n",
    "plt.show()                                    # 显示绘制结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 用函数实现结构更清晰\n",
    "\n",
    "import matplotlib.pyplot as plt               # 导入pyplot子库命名为plt\n",
    "import numpy as np                            # 导入numpy库命名为np\n",
    "\n",
    "def sub_plot():\n",
    "    plt.subplot(2, 2, 1)                          # 分成2行2列,占用第1个位置\n",
    "    plt.plot(x_arr, sin_arr, '--r', lw=2)         # 红色破折线\n",
    "    plt.subplot(2, 2, 2)                          # 分成2行2列,占用第2个\n",
    "    plt.plot(x_arr, cos_arr, ':g')                # 绿色虚线\n",
    "    plt.subplot(2, 1, 2)                          # 分成2行1列,占用第2个\n",
    "    plt.plot(x_arr, np.sin(6*x_arr), '-b', lw=2)  # y=\"sin(6x)\"函数曲线\n",
    "\n",
    "\n",
    "if __name__ == '__main__':\n",
    "    x_arr = np.linspace(0, 2 * np.pi, 256)  # 0到2pi之间产生256个等间距的点的数组\n",
    "    sin_arr = np.sin(x_arr)  # 根据x值计算50个sin(x)值,数组类型\n",
    "    cos_arr = np.cos(x_arr)  # 根据x值计算50个cos(x)值,数组类型\n",
    "    sub_plot()\n",
    "    plt.show()       # 显示绘制结果"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}