精华内容
下载资源
问答
  • 本文以2019年全国各城市的空气质量观测数据为例,利用matplotlib、calmap、pyecharts绘制日历图和热力图。在绘图之前先利用pandas对空气质量数据进行处理。2019年全国各城市空气质量观测数据来源于:...

    本文以2019年全国各城市的空气质量观测数据为例,利用matplotlib、calmap、pyecharts绘制日历图和热力图。在绘图之前先利用pandas对空气质量数据进行处理。

    2019年全国各城市空气质量观测数据来源于:https://beijingair.sinaapp.com。

    数据处理

    从网站下载的数据为逐小时数据,每天一个文件。如果要绘制全年的日历图或者热图,首先要将所有的数据进行合并处理。

    下载好数据之后,将数据解压到当前目录的2019文件夹内,然后处理数据:import globfrom datetime import datetime, timedeltaimport numpy as npimport pandas as pd

    from matplotlib import cm, colorsimport matplotlib.dates as mdatesimport matplotlib.patches as mpatchesimport matplotlib.pyplot as plt

    def format_aqi(filep, columns=None): files = glob.glob(filep)

    df = pd.concat((pd.read_csv(f) for f in files)) df.index = pd.to_datetime(df.date.astype(np.str) + df.hour.apply(lambda x: '%02d'%x), format='%Y%m%d%H') # drop date and hour columns df.drop(['date', 'hour'], axis=1, inplace=True)

    df = df.pivot_table(columns='type', index=df.index) df.columns.names = ['station', 'type'] df.index.names = ['date']

    df = df.stack('station')

    if columns is not None: df = df.loc[:, columns]

    return df

    filep = '2019/china*.csv' data = format_aqi(filep)data.csv('2019.csv') # 保存以便后续使用

    合并完成数据后,读取数据并进一步处理:data = pd.read_csv('2019.csv', index_col='date', parse_dates=True)data2 = data.pivot_table(index=data.index, columns=['station'])

    time_range = pd.date_range(datetime(2019, 10, 1, 0), datetime(2019, 12, 31, 23), freq='1h')

    idx = pd.IndexSliceaqi = data2.loc[:, idx['AQI', :]].xs('AQI', axis=1)aqi = aqi.reindex(time_range)

    cities = ['北京', '天津', '石家庄', '邯郸', '济南', '郑州', '菏泽', '亳州', '徐州', '驻马店', '南京', '合肥', '马鞍山', '武汉', '上海', '杭州', '长沙', '南昌', '上饶', '温州', '吉安', '赣州', '福州', '龙岩', '厦门', '泉州' ]

    sub = aqi[cities[::-1]]

    绘制热力图

    因为空气质量有专门的配色,首先设置对应等级的colormapcolors_aqi = ['#009966', '#FFDE33', '#FF9A32', '#CC0033', '#660099']levels = [0, 50, 100, 150, 200, 300]

    cmap_aqi = colors.ListedColormap(colors_aqi) norm = colors.BoundaryNorm(levels, cmap_aqi.N)

    然后,开始绘图:fig, ax = plt.subplots(figsize=(16, 9))

    con = ax.pcolormesh(sub.index.values, np.arange(0, sub.columns.shape[0]+1), sub.T, cmap=cmap_aqi, norm=norm, vmin=0, vmax=300 )

    sdate = datetime(2019, 10, 1)edate = datetime(2019, 12, 31)xticks = pd.date_range(sdate, edate, freq='15d')

    ax.set_xlim([sdate, edate])ax.set_xticks(xticks)ax.set_xticklabels([i.strftime('%m/%d') for i in xticks])ax.set_yticks(np.arange(0.5, len(cities)))_ = ax.set_yticklabels(sub.T.index.values, fontdict={'family': 'SimHei', 'fontsize': 16})

    ytext = [i.get_text() for i in list(ax.get_yticklabels())]

    cb = fig.colorbar(con, extend='max', pad=0.02, extendrect=True, extendfrac=0.2)cb.cmap.set_over('#7D0023')

    cb.ax.tick_params(axis='both', direction='in', length=0)_ = cb.ax.set_ylabel('Air Quality Index(AQI)', fontdict={'family': 'Times New Roman'})

    2019年10月-12月各城市的AQI日变化

    绘制日历图

    python中关于绘制日历图的工具相对较少,没有特别有些的工具。下面分别使用calmap和pyecharts绘制日历图。

    注意:calmap已经放弃维护了,在使用过程中可能会存在问题。本文fork了原来的源码,解决了可能遇到的问题。可以从https://github.com/bugsuse/calmap下载源码,然后执行python setup.py install进行安装即可。

    注意:本文为了简单起见,利用AQI绘图时,直接对AQI求日均值,但是实际情况下是不能直接这样计算的。import calmap

    dd = data[data.station == '北京'].AQI.resample('1d').mean()

    fig, ax = plt.subplots(figsize=(18, 9))

    cmp = calmap.yearplot(dd, how=None, year=2019, cmap=cmap_aqi, norm=norm, vmin=0, vmax=300, )

    ax2 = fig.add_axes([0.94, 0.4, 0.015, 0.2])cb1 = mpl.colorbar.ColorbarBase(ax2, cmap=cmap_aqi, ticks=levels, norm=norm, orientation='vertical', extend='max', extendrect=True, extendfrac=0.15)cb1.cmap.set_over('#7D0023')cb1.set_ticks([25, 75, 125, 175, 250])cb1.ax.set_yticklabels([u'优', u'良', u'轻度污染', u'中度污染', u'重度污染'], fontdict={'fontsize': 16, 'family': 'SimHei'}) cb1.ax.yaxis.set_tick_params(length=0.01)ax2.text(1.13, 1.07, '严重污染', fontdict={'fontsize':16, 'family':'SimHei'})

    ax.set_ylabel('2019', fontdict=dict(fontsize=26, color='grey'))

    2019年北京市AQI日历图

    下面利用pyecharts绘制2019年北京市AQI日历图。from pyecharts import options as optsfrom pyecharts.charts import Calendar

    begin = datetime(2019, 1, 1)end = datetime(2019, 12, 31)data = [ [str(begin + timedelta(days=i)), dd[i]] for i in range((end - begin).days + 1)]

    c = ( Calendar() .add( "", data, calendar_opts=opts.CalendarOpts( range_='2019', daylabel_opts=opts.CalendarDayLabelOpts(name_map='cn'), monthlabel_opts=opts.CalendarMonthLabelOpts(name_map='cn'), ), ) .set_global_opts( title_opts=opts.TitleOpts(title='2019年北京市每日AQI(Air Quality Index)', pos_left='center'), visualmap_opts=opts.VisualMapOpts( max_=300, min_=0, range_size=[0, 50, 100, 150, 200, 300], pieces= [{'min': 0, 'max': 50}, {'min': 51, 'max': 100}, {'min': 101, 'max': 150}, {'min': 151, 'max': 200}, {'min': 201, 'max': 300}], range_color=colors_aqi, orient='horizontal', is_piecewise=True, pos_top='230px', pos_left='100px', ), ))

    2019年北京市AQI日历图

    绘制热力图也可以使用seaborn,不需要单独码很多代码,而且功能要更多一些。python在绘制日历图方面不是非常友好,相比之下,pyecharts更有优势。但是pyecharts更适合线上可视化展示,不太适合制作用于发表论文的图。

    这次就说到这了,感兴趣的可以去尝试一下。

    展开全文
  • 本文以2019年全国各城市的空气质量观测数据为例,利用matplotlib、calmap、pyecharts绘制日历图和热力图。在绘图之前先利用pandas对空气质量数据进行处理。2019年全国各城市空气质量观测数据来源于:...

    本文以2019年全国各城市的空气质量观测数据为例,利用matplotlib、calmap、pyecharts绘制日历图和热力图。在绘图之前先利用pandas对空气质量数据进行处理。

    2019年全国各城市空气质量观测数据来源于:https://beijingair.sinaapp.com。

    数据处理

    从网站下载的数据为逐小时数据,每天一个文件。如果要绘制全年的日历图或者热图,首先要将所有的数据进行合并处理。

    下载好数据之后,将数据解压到当前目录的2019文件夹内,然后处理数据:

    import globfrom datetime import datetime, timedeltaimport numpy as npimport pandas as pd

    from matplotlib import cm, colorsimport matplotlib.dates as mdatesimport matplotlib.patches as mpatchesimport matplotlib.pyplot as plt

    def format_aqi(filep, columns=None): files = glob.glob(filep)

    df = pd.concat((pd.read_csv(f) for f in files)) df.index = pd.to_datetime(df.date.astype(np.str) + df.hour.apply(lambda x: '%02d'%x), format='%Y%m%d%H') # drop date and hour columns df.drop(['date', 'hour'], axis=1, inplace=True)

    df = df.pivot_table(columns='type', index=df.index) df.columns.names = ['station', 'type'] df.index.names = ['date']

    df = df.stack('station')

    if columns is not None: df = df.loc[:, columns]

    return df

    filep = '2019/china*.csv' data = format_aqi(filep)data.csv('2019.csv') # 保存以便后续使用

    合并完成数据后,读取数据并进一步处理:

    data = pd.read_csv('2019.csv', index_col='date', parse_dates=True)data2 = data.pivot_table(index=data.index, columns=['station'])

    time_range = pd.date_range(datetime(2019, 10, 1, 0), datetime(2019, 12, 31, 23), freq='1h')

    idx = pd.IndexSliceaqi = data2.loc[:, idx['AQI', :]].xs('AQI', axis=1)aqi = aqi.reindex(time_range)

    cities = ['北京', '天津', '石家庄', '邯郸', '济南', '郑州', '菏泽', '亳州', '徐州', '驻马店', '南京', '合肥', '马鞍山', '武汉', '上海', '杭州', '长沙', '南昌', '上饶', '温州', '吉安', '赣州', '福州', '龙岩', '厦门', '泉州' ]

    sub = aqi[cities[::-1]]

    绘制热力图

    因为空气质量有专门的配色,首先设置对应等级的colormap

    colors_aqi = ['#009966', '#FFDE33', '#FF9A32', '#CC0033', '#660099']levels = [0, 50, 100, 150, 200, 300]

    cmap_aqi = colors.ListedColormap(colors_aqi) norm = colors.BoundaryNorm(levels, cmap_aqi.N)

    然后,开始绘图:

    fig, ax = plt.subplots(figsize=(16, 9))

    con = ax.pcolormesh(sub.index.values, np.arange(0, sub.columns.shape[0]+1), sub.T, cmap=cmap_aqi, norm=norm, vmin=0, vmax=300 )

    sdate = datetime(2019, 10, 1)edate = datetime(2019, 12, 31)xticks = pd.date_range(sdate, edate, freq='15d')

    ax.set_xlim([sdate, edate])ax.set_xticks(xticks)ax.set_xticklabels([i.strftime('%m/%d') for i in xticks])ax.set_yticks(np.arange(0.5, len(cities)))_ = ax.set_yticklabels(sub.T.index.values, fontdict={'family': 'SimHei', 'fontsize': 16})

    ytext = [i.get_text() for i in list(ax.get_yticklabels())]

    cb = fig.colorbar(con, extend='max', pad=0.02, extendrect=True, extendfrac=0.2)cb.cmap.set_over('#7D0023')

    cb.ax.tick_params(axis='both', direction='in', length=0)_ = cb.ax.set_ylabel('Air Quality Index(AQI)', fontdict={'family': 'Times New Roman'})

    z11qyva5sda.png

    2019年10月-12月各城市的AQI日变化

    绘制日历图

    python中关于绘制日历图的工具相对较少,没有特别有些的工具。下面分别使用calmap和pyecharts绘制日历图。

    注意:calmap已经放弃维护了,在使用过程中可能会存在问题。本文fork了原来的源码,解决了可能遇到的问题。可以从https://github.com/bugsuse/calmap下载源码,然后执行python setup.py install进行安装即可。

    注意:本文为了简单起见,利用AQI绘图时,直接对AQI求日均值,但是实际情况下是不能直接这样计算的。

    import calmap

    dd = data[data.station == '北京'].AQI.resample('1d').mean()

    fig, ax = plt.subplots(figsize=(18, 9))

    cmp = calmap.yearplot(dd, how=None, year=2019, cmap=cmap_aqi, norm=norm, vmin=0, vmax=300, )

    ax2 = fig.add_axes([0.94, 0.4, 0.015, 0.2])cb1 = mpl.colorbar.ColorbarBase(ax2, cmap=cmap_aqi, ticks=levels, norm=norm, orientation='vertical', extend='max', extendrect=True, extendfrac=0.15)cb1.cmap.set_over('#7D0023')cb1.set_ticks([25, 75, 125, 175, 250])cb1.ax.set_yticklabels([u'优', u'良', u'轻度污染', u'中度污染', u'重度污染'], fontdict={'fontsize': 16, 'family': 'SimHei'}) cb1.ax.yaxis.set_tick_params(length=0.01)ax2.text(1.13, 1.07, '严重污染', fontdict={'fontsize':16, 'family':'SimHei'})

    ax.set_ylabel('2019', fontdict=dict(fontsize=26, color='grey'))

    03kqrrhqmab.png

    2019年北京市AQI日历图

    下面利用pyecharts绘制2019年北京市AQI日历图。

    from pyecharts import options as optsfrom pyecharts.charts import Calendar

    begin = datetime(2019, 1, 1)end = datetime(2019, 12, 31)data = [ [str(begin + timedelta(days=i)), dd[i]] for i in range((end - begin).days + 1)]

    c = ( Calendar() .add( "", data, calendar_opts=opts.CalendarOpts( range_='2019', daylabel_opts=opts.CalendarDayLabelOpts(name_map='cn'), monthlabel_opts=opts.CalendarMonthLabelOpts(name_map='cn'), ), ) .set_global_opts( title_opts=opts.TitleOpts(title='2019年北京市每日AQI(Air Quality Index)', pos_left='center'), visualmap_opts=opts.VisualMapOpts( max_=300, min_=0, range_size=[0, 50, 100, 150, 200, 300], pieces= [{'min': 0, 'max': 50}, {'min': 51, 'max': 100}, {'min': 101, 'max': 150}, {'min': 151, 'max': 200},

    d1bjqftcjua.png

    2019年北京市AQI日历图

    绘制热力图也可以使用seaborn,不需要单独码很多代码,而且功能要更多一些。python在绘制日历图方面不是非常友好,相比之下,pyecharts更有优势。但是pyecharts更适合线上可视化展示,不太适合制作用于发表论文的图。

    这次就说到这了,感兴趣的可以去尝试一下。

    以上就是Python如何绘制日历图和热力图的详细内容,更多关于Python绘制日历图和热力图的资料请关注我们其它相关文章!

    本文标题: Python如何绘制日历图和热力图

    本文地址: http://www.cppcns.com/jiaoben/python/331629.html

    展开全文
  • Python定义了内置模块calendar它处理与日历相关的操作。Calendar module允许输出日历(如程序),并提供与日历相关的其他有用功能。Calendar模块中定义的函数和类使用理想化的日历,当前的公历在两个方向上无限期扩展...

    Python定义了内置模块calendar它处理与日历相关的操作。

    Calendar module允许输出日历(如程序),并提供与日历相关的其他有用功能。

    Calendar模块中定义的函数和类使用理想化的日历,当前的公历在两个方向上无限期扩展。

    默认情况下,这些日历的周一为一周的第一天,星期日为最后一天。

    ?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F1120%2Ff2496e55p00qk2vjs001nc000hs007kc.png&thumbnail=650x2147483647&quality=80&type=jpg

    例1:显示给定月份的日历。

    # Python program to display calendar of

    # given month of the year

    # import module

    import calendar

    yy = 2017

    mm = 11

    # display the calendar

    print(calendar.month(yy, mm))

    ?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F1120%2F23b4b1ebj00qk2vjs000nc000hs00cmc.jpg&thumbnail=650x2147483647&quality=80&type=jpg

    例2:显示给定年份的日历。

    # Python code to demonstrate the working of

    # calendar() function to print calendar

    # importing calendar module

    # for calendar operations

    import calendar

    # using calender to print calendar of year

    # prints calendar of 2018

    print ("The calender of year 2018 is : ")

    print (calendar.calendar(2018, 2, 1, 6))

    产出:

    ?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F1120%2Fb241a4bdp00qk2vjs005ac000hs00k6c.png&thumbnail=650x2147483647&quality=80&type=jpg

    ?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F1120%2F8b5b7477p00qk2vjs004gc000hs00emc.png&thumbnail=650x2147483647&quality=80&type=jpg

    ?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F1120%2F322133dfp00qk2vjs000rc000hs0046c.png&thumbnail=650x2147483647&quality=80&type=jpg

    ?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F1120%2Fade2d87ap00qk2vjs000kc000hs003bc.png&thumbnail=650x2147483647&quality=80&type=jpg

    ?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F1120%2F54b2f818p00qk2vjs002kc000hs00aac.png&thumbnail=650x2147483647&quality=80&type=jpg

    展开全文
  • 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。以下文章来源于Python实用宝典 ,作者Python实用宝典给自己10分钟(滑稽),python回你一个...

    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

    以下文章来源于Python实用宝典 ,作者Python实用宝典

    给自己10分钟(滑稽),python回你一个智慧与美貌并存的备忘小神器 相信它会给你带来不少方便(滑稽)

    28fc7615-e0ff-470f-b174-f8db661eacd7

    一、环境说明

    开始之前,当然要跟小伙伴们交代一下运行环境咯

    我们使用的python版本为 Python3.6,需要使用到的包为 openpyxl 及calendar,后者是python自带的,而前者则需要小伙伴们打开Cmd/Terminal,运行以下指令安装,如果你还没有安装python,请看这篇文章:

    pip install openpyxl

    安装完成后我们就可以正式开始啦!

    二、代码说明

    我们会给大家先讲解一些细节的东西,等大家都理解明白了原理,最后会献上完整的源代码~

    1. 首先,绘制一份日历,我们得先知道每个月份有多少天,每天都是星期几,我们使用calendar包获得这些信息:

    calendar.monthcalendar(2019, i)

    通过这个函数,我们能得到 2019年i月的日历,它类似一个j*k的矩阵,因此我们可以这样遍历得到每一个日期:

    for j in range(len(calendar.monthcalendar(2019, i))):for k in range(len(calendar.monthcalendar(2019, i)[j])):

    value= calendar.monthcalendar(2019, i)[j][k]

    2. 其次,我们怎么样绘制得到日历呢?

    openpyxl包给予了我们答案,最方便的做法是我们先将日历绘制到Excel中,然后再从Excel中提取图片出来。openpyxl怎么用?给大家一个设置单元格字体的例子:

    sheet.cell(row=j + 4 + count, column=k + 2).font = Font(u'微软雅黑', color=text_color , size=14)

    sheet是对应的表格,row和column就是某个单元格的位置,然后对font属性进行设置,调用Font类并设置参数,如果大家不知道Font类有什么参数,可以参考openpyxl官方文档:https://openpyxl.readthedocs.io/en/stable/,你可以看到里面大部分单元格的属性都是这样设置的,非常简单。

    3. 我们的作品是每个月份都有一个图在旁边做装饰,其添加方法如下:

    imgs = ['12/1.jpg','12/2.jpg','12/3.jpg','12/4.jpg','12/5.jpg','12/6.jpg','12/7.jpg','12/8.jpg','12/9.jpg','12/10.jpg','12/11.jpg','12/12.jpg']

    img= Image(imgs[i-1])

    sheet.add_image(img,'J2')

    imgs是每个图的相对路径,如12/1.jpg 是名字为12的文件夹下的1.jpg. 图像路径要导入到openpyxl的Image对象中: img=Image('12/1.jpg'),然后将该变量放置到某个单元格上:sheet.add_image(img, 'J2).

    这样看你可能会有点糊涂, i-1是哪里来的?sheet是哪里来的?没关系,其实是因为讲解的时候只能给大家献上部分代码,看完下面的完整代码你们就懂啦:

    from openpyxl.styles importAlignment, PatternFill, Font, Border, Sidefrom openpyxl.utils importget_column_letterfrom openpyxl.drawing.image importImageimportopenpyxlimportcalendardefset_information(date, text):

    t={}

    t['month'] = date.split('-')[1]

    t['day'] = date.split('-')[2]

    t['text'] =text

    flex_text.append(t)defset_month_value(i, sheet, border_color, text_color, color_one, color_two):#i: 月份

    #sheet: 该月份的excel

    #border_color: 边框颜色

    count =0#render_color 用来设定单元格背景色,交替进行

    render_color_1 = 1render_color_2=0for j in range(len(calendar.monthcalendar(2019, i))):for k in range(len(calendar.monthcalendar(2019, i)[j])):

    value= calendar.monthcalendar(2019, i)[j][k]#将0值变为空值

    bd = Border(right=Side(color=border_color, style='thick'),

    top=Side(color=border_color, style='thick'),

    left=Side(color=border_color, style='thick'))

    right_bd= Border(right=Side(color=border_color, style='thick'),

    left=Side(color=border_color, style='thick'),

    bottom=Side(color=border_color, style='thick'))if value ==0:

    value= ''sheet.cell(row=j + 4 + count, column=k + 2).value =value

    sheet.cell(row=j + 4 + count, column=k + 2).border =bd

    sheet.cell(row=j + 5 + count, column=k + 2).border =right_bdelse:

    sheet.cell(row=j + 4 + count, column=k + 2).value =value

    sheet.cell(row=j + 4 + count, column=k + 2).border =bd

    sheet.cell(row=j + 4 + count, column=k + 2).font = Font(u'微软雅黑', color=text_color , size=14)

    sheet.cell(row=j + 5 + count, column=k + 2).border =right_bd#单元格文字设置,右对齐,垂直居中

    if render_color_1 >render_color_2:

    sheet.cell(row=j + 4 + count, column=k + 2).fill = PatternFill("solid", fgColor=color_one)

    sheet.cell(row=j + 5 + count, column=k + 2).fill = PatternFill("solid", fgColor=color_one)

    render_color_2+= 1

    else:

    sheet.cell(row=j + 4 + count, column=k + 2).fill = PatternFill("solid", fgColor=color_two)

    sheet.cell(row=j + 5 + count, column=k + 2).fill = PatternFill("solid", fgColor=color_two)

    render_color_1+= 1

    #提取当天所有事件

    text = ''

    for t inflex_text:if int(t['day']) == value and int(t['month']) ==i:print(t)

    text= text + t['text']+'\n'

    #设置事件信息

    if text != '':

    sheet.cell(row=j + 5 + count, column=k + 2).value =text

    sheet.cell(row=j + 5 + count, column=k + 2).font = Font(u'宋体',color=text_color, size=13)

    align= Alignment(horizontal='right', vertical='center', wrapText=True)#wrapText 设置单元格可包含多行字符

    sheet.cell(row=j + 5 + count, column=k + 2).alignment =align

    count+= 1

    defset_week_line(sheet, border_color, workday_color, otherday_color, text_color):#设置星期栏

    align = Alignment(horizontal='center', vertical='center')

    days= ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']

    bd_day= Border(right=Side(color=border_color, style='thick'),

    top=Side(color=border_color, style='thick'),

    left=Side(color=border_color, style='thick'))

    num=0#单元格填充色属性设置

    for day in range(2, 9):

    sheet.cell(row=3, column=day).value =days[num]

    sheet.cell(row=3, column=day).alignment =align

    sheet.cell(row=3, column=day).border =bd_day

    sheet.cell(row=3, column=day).font = Font(u'微软雅黑', color=text_color, bold=True , size=12)#设置列宽12

    c_char =get_column_letter(day)

    sheet.column_dimensions[get_column_letter(day)].width= 12

    #行高27

    sheet.row_dimensions[day].height = 27num+= 1

    if day == 2 or day == 8:for r in range(3, 14):

    sheet.cell(row=r, column=day).fill = PatternFill("solid", fgColor=otherday_color)else:

    sheet.cell(row=3, column=day).fill = PatternFill("solid", fgColor=workday_color)defset_month_year(i, sheet, year_color, month_color):#添加年份及月份

    sheet.cell(row=2, column=8).value = '2019'sheet.cell(row=2, column=8).font = Font(u'微软雅黑', size=30, color=year_color)

    sheet.cell(row=2, column=2).value = str(i) + '月'sheet.cell(row=2, column=2).font = Font(u'微软雅黑', size=25, color=month_color)

    sheet.row_dimensions[2].height = 35

    defget_month_xlsx(wb, imgs, flex_text):for i in range(1, 13):

    sheet= wb.create_sheet(index=0, title=str(i) + '月')#添加工作表

    text_color= '000000'

    #日历文字颜色

    text_color_week = '000000'

    #星期栏文字颜色

    BorderCorlor = 'B7E0E8'

    #边框颜色

    backgroundColor = 'FFFFFF'

    #背景颜色

    workday_color = 'CBEEEE'

    #工作日背景颜色

    otherday_color = '7FD4D2'

    #其他日背景颜色

    year_color = '000000'

    #年份颜色

    month_color = '000000'

    #月份颜色

    s_color = 'CBEEEE'

    #单数颜色

    d_color = 'A5E1E0'

    #双数颜色

    #单元格的背景色

    for k1 in range(1, 15):for k2 in range(1, 16):

    sheet.cell(row=k1, column=k2).fill = PatternFill("solid", fgColor=backgroundColor)

    set_month_value(i, sheet, BorderCorlor, text_color, s_color, d_color)#设定月份的值,参数:月份, 表, 边框颜色

    set_week_line(sheet, BorderCorlor, workday_color, otherday_color, text_color_week)#设定星期栏

    set_month_year(i, sheet, year_color, month_color)#设定年份和月份的格式

    #设置日历主体行高

    for row in range(3, 19):if row % 2 == 0 or row == 3:

    sheet.row_dimensions[row].height= 28

    else:

    sheet.row_dimensions[row].height= 56

    #合并单元格

    sheet.merge_cells('I1:P14')#添加图片

    img = Image(imgs[i-1])

    sheet.add_image(img,'J2')#添加二维码

    img = Image('2.png')

    sheet.add_image(img,'O2')

    calendar.setfirstweekday(firstweekday=6)

    wb=openpyxl.Workbook()

    flex_text=[]

    imgs= ['12/1.jpg','12/2.jpg','12/3.jpg','12/4.jpg','12/5.jpg','12/6.jpg','12/7.jpg','12/8.jpg','12/9.jpg','12/10.jpg','12/11.jpg','12/12.jpg']#每个月的图片

    set_information('2019-12-1', '考试')

    set_information('2019-12-1', '约会')#需要添加的信息

    get_month_xlsx(wb, imgs, flex_text)#得到文档

    wb.save('my_calendary.xlsx')#保存文档

    4. 我们还有一个神秘功能

    差点忘了告诉大家了,我们的日历能支持备注哦,在调用get_month_xlsx得到文档前,通过set_information()放入你某一天想做的事情即可。如:

    set_information('2019-12-5', '面试')

    0b47cc6ccdd449be9bd1aafd6f41385c

    三、运行代码

    终于到了激动人心的运行代码部分了,运行这份代码,你只需要把你想要的图片变量名改一下即可,即imgs. 然后在本地cmd/terminal运行:

    会自动生成一个Excel表格叫my_calendary.xlsx. 怎样从里面把日历提取成图片呢?很简单,复制拉取你想要的部分,粘贴到聊天窗口就能变成一个图片!

    7cb83b7f855942769b04987e71a5711b

    展开全文
  • 1 importdatetime2 importrandom34 from pyecharts importoptions as opts5 from pyecharts.charts importCalendar67 begin = datetime.date(2017, 1, 1)8 end = datetime.date(2017, 12, 31)9 data =[10 [s...
  • tkinter 下拉日历控件网上找的不完善的tk日历进行修改的,可以快捷的找到并返回日期。 效果如下,上面的是控件,下面的是调用demo窗口? 如下所示:# -*- coding:utf-8 -*- import calendarimport tkinter as tk...
  • #calendar.prcal(year,w = 2,I = 1,c = 6)#返回 year 年的日历importcalendarcalendar.prcal(2020)#print(calendar.prcal(2020,2,1,6))#2020##January February March#Mo Tu We Th Fr...
  • python日历打印

    2018-10-09 16:12:45
    python日历打印代码,利用python实现简单的日历输出,适合新手入门学习。
  • calendar模块的函数都是日历相关的,提供了对日期的一些操作方法,和生成日历的方法.calendar模块中提供了三大类:一、calendar.Calendar(firstweekday=0)该类提供了许多生成器,如星期的生成器,某月日历生成器二、...
  • importsysfromPySideimportQtGui,QtCoreclassExample(QtGui.QWidget):def__init__(self):super(Example,self).__init__()self.initUI()definitUI(self):cal=QtGui.QCalendarWidget(self)cal.setGridVisib...
  • calendar#打印2019年的日历x= calendar.calendar(2019) print(x)#打印全年日历calendar.prcal(2019)# 打印月份c = calendar.month(2019,2)print(c)# calendar.prmonth(2019,2)#判断闰年a = calendar.isleap(2019)...
  • calendar模块的函数都是日历相关的,提供了对日期的一些操作方法,和生成日历的方法.calendar模块中提供了三大类:一、calendar.Calendar(firstweekday=0)该类提供了许多生成器,如星期的生成器,某月日历生成器二、...
  • 我们正在尝试在python中创建日历函数.我们创建了一个小型的内容管理系统,要求是,网站的右上角会有一个下拉列表,它会给出选项 – 月 – 1个月,2个月,3个月等等. ..,如果用户选择8个月,那么它应该显示过去8个月的...
  • python日历模块 Python calendar.setfirstweekday()方法 (Python calendar.setfirstweekday() Method) setfirstweekday() method is an inbuilt method of the calendar module in Python. It works on simple text ...
  • python日历模块 Python calendar.firstweekday()方法 (Python calendar.firstweekday() Method) firstweekday() method is an inbuilt method of the calendar module in Python. It works on simple text calendars...
  • python日历模块 Python calendar.prcal()方法 (Python calendar.prcal() Method) prcal() method is an inbuilt method of the calendar module in Python. It works on simple text calendars and prints the ...
  • python日历模块 Python calendar.calendar()方法 (Python calendar.calendar() Method) calendar() method is an inbuilt method of the calendar module in Python. It works on simple text calendars and returns...
  • python日历模块 Python calendar.prmonth()方法 (Python calendar.prmonth() Method) prmonth() method is an inbuilt method of the calendar module in Python. It works on simple text calendars and prints the...
  • python日历

    2013-12-12 16:00:12
    一个日历显示机制,GUI平台的。输入年份即可将会出现一年的日历
  • python日历模块 Python calendar.month()方法 (Python calendar.month() Method) month() method is an inbuilt method of the calendar module in Python. It works on simple text calendars and returns a multi-...
  • python日历模块 Python calendar.leapdays()方法 (Python calendar.leapdays() Method) leapdays() method is an inbuilt method of the calendar module in Python. It works on simple text calendars and returns...
  • #未优化的代码1 #输出日历def print_calendar(year,month,date = 1):month_dict = {'':'January','':'February','':'March','':'April','':'May','':'June','':'July','':'August','':'September','':'October','':'...
  • python日历-源码

    2021-02-15 16:09:45
    Python日历 Python乌龟图形日历使用各种模式 在日历中输入您要查看的日期 输出每月有不同图纸的日历 您输入的日期会显示星星 特征 每月不同的图纸 calculator年计算器 使用哈希表确定一天的位置 截屏 使用的功能 ...
  • python日历模块 Python calendar.monthrange()方法 (Python calendar.monthrange() Method) monthrange() method is an inbuilt method of the calendar module in Python. It works on the simple text calendars ...
  • 这是来自calendar模块的源代码:def formatmonthname(self, theyear, themonth, width, withyear=True):with TimeEncoding(self.locale) as encoding:s = month_name[themonth]if encoding is not None:s = s.decode...
  • python 日历

    2016-11-01 15:00:00
    上章总结了python中time模块的使用,这次总结日历模块 calendar >>> import calendar >>> cal = calendar.month(2016,1)>>> cal January 2016\nMo Tu We Th Fr Sa Su\n 1 2 3\n 4 5 6...
  • importcalendar#日历模块#使用#返回指定某年某月的日历print(calendar.month(2017,7))#July 2017#Mo Tu We Th Fr Sa Su#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#返回...
  • 11.1.2 企业股票每日交易量分析为了分析该企业股票的成交量,绘制了股票每日交易量的日历图Python代码如下:# -*-coding: utf-8 -*- #声明Notebook类型,必须在引入pyecharts.charts等模块前声明frompyecharts....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,769
精华内容 6,707
关键字:

python日历图

python 订阅