json和plt画图

import json
import numpy as np
from collections import defaultdict
from os import listdir
from os.path import isfile, join
from scipy import misc
import matplotlib.pyplot as plt
from pylab import *



def draw_point(json_name, input_name, out_name):
    print json_name
    json_file=open(json_name)
    annos = json.load(json_file)
    figure()
    im = misc.imread(input_name)
    plt.imshow(im)



    curr = annos['shapes']
    # print curr[0]['points'][0]
    for item in curr:
        if item['label'][:5] == 'Empty':
            continue
        x = item['points'][0]
        plot(x[0], x[1], 'ro')

    # show()
    plt.savefig(out_name)

    # misc.imsave(out_name, im)
    # title('Plotting: "empire.jpg"')
    # show()


dirname = 'E:\picture\coco_part4\images'
imglist = [f for f in listdir(dirname) if isfile(join(dirname, f))]
for i in range (10):
    json_name = 'E:\picture\coco_part4\images\\annotations\\'+imglist[i][:-4] + '.json'
    input_name = 'E:\picture\coco_part4\images\\'+imglist[i]
    out_name = 'E:\picture\coco_part4\imagesss\\'+imglist[i]

    draw_point(json_name,input_name,out_name)



   # print '\nshow keys: '
# for annos_key in annos.keys():
#     print annos_key + ' len: ' + str(len(annos[str(annos_key)]))



        # for item_key, item_value in item.items():  # emp.values():  emp.items():
         # print item_key, '---',  item_value
        # break



    # print im.shape  # (512, 512, 3)



    # y[1] = im.shape[1] - y[1]
    # print 'x:',x ,'y:',y




# 
# plt.plot(x, 'r*')
# plt.figure(0)  

# plt.show()
### Python Matplotlib 字体加粗设置 在 Python 的 Matplotlib 库中,可以通过多种方式来设置字体为加粗样式。以下是几种常见的方法: #### 方法一:通过 `rcParams` 配置全局字体属性 可以使用 `matplotlib.rcParams` 来配置全局的字体参数,从而影响整个图形中的文字显示效果。例如,要使所有文本默认为粗体,可执行以下代码: ```python import matplotlib.pyplot as plt plt.rc('font', weight='bold') # 设置全局字体为粗体 ``` 这种方法适用于希望在整个脚本或项目中统一应用粗体样式的场景[^1]。 #### 方法二:局部调整特定文本的字体权重 如果只需要某些部分的文字(如标题、轴标签等)变为粗体,则可以在绘制这些元素时指定 `weight='bold'` 参数。例如: ```python import matplotlib.pyplot as plt fig, ax = plt.subplots() ax.plot([1, 2, 3], [4, 5, 6]) # 设置标题轴标签为粗体 ax.set_title("这是一个粗体标题", fontsize=14, weight='bold') ax.set_xlabel("X 轴 (单位)", weight='bold') ax.set_ylabel("Y 轴 (单位)", weight='bold') plt.show() ``` 此方法允许灵活控制哪些具体位置需要采用粗体风格。 #### 方法三:支持中文环境下的粗体字处理 当涉及中文字符并尝试将其设为粗体时,需额外注意所选字体是否具备相应的粗体版本。按照引用说明操作后,还需确认使用的 TTF 文件确实包含粗体特性。下面是一个完整的流程实例: 1. **安装所需字体** 下载适合的中文字体包,并完成本地安装。 2. **清除旧版缓存数据** 删除路径下最近一次生成的相关 JSON 缓存文档[C:\Users\NAME\.matplotlib]内的 fontlist-*json* 文件[^2]。 3. **验证可用字体清单** 利用内置模块检索当前系统上全部有效字体及其正式命名规则。 ```python import matplotlib.font_manager # 查找所有系统字体 font_list = matplotlib.font_manager.findSystemFonts(fontpaths=None, fontext='ttf') font_names = [ matplotlib.font_manager.FontProperties(fname=fname).get_name() for fname in font_list ] # 输出每种字体详情 for idx, name in enumerate(font_names): print(f"{idx}: {name}") ``` 4. **实际绘图演示** 基于上述获取到的有效字体名,在作图过程中显式指派给目标对象即可生效。 ```python from matplotlib import rcParams import matplotlib.pyplot as plt # 设定自定义字体族类 rcParams['font.family'] = 'SimHei' # 或其他兼容中文且含Bold特性的字体名称 rcParams['axes.unicode_minus'] = False fig, ax = plt.subplots(figsize=(8, 6)) x_data = range(1, 10) y_data = [xi * xi for xi in x_data] ax.plot(x_data, y_data, label="二次函数曲线") ax.legend(prop={'size': 12, 'weight': 'bold'}) ax.set_title("带有粗体汉字的支持图表", size=16, weight='bold') ax.set_xlabel("横坐标描述信息", weight='bold') ax.set_ylabel("纵坐标数值范围", weight='bold') plt.grid(True) plt.tight_layout() plt.show() ``` 以上步骤能够确保即使是在含有复杂语言编码的情况下也能正常渲染出期望的效果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值